多行命令和状态代码

aze*_*rIO 2 bash

sfdisk -D $val << EOF
,,$type  
EOF
Run Code Online (Sandbox Code Playgroud)

如何在执行后检查其状态?不是通过if ... $ ?,而是通过disjunction ||.我的意思是我可以做到以下几点: ls|| 退出4如果遇到错误,它将以代码4退出,但是如何在我的示例中执行此操作?

第二个问题是,如何在失败时执行多个命令?是这样的吗?

`ls` || { echo "!!!"; exit 4 }
Run Code Online (Sandbox Code Playgroud)

谢谢!

Wes*_*ker 5

你实际上问了两个不同的问题......

第一个答案就是你把条件放在<< FOO部分之后:

我正在使用&&这里以便于查看输出.但是使用此命令集:

# cat << EOF && ( echo hi ; echo there )
foo
bar
EOF
Run Code Online (Sandbox Code Playgroud)

你得到:

foo
bar
hi
there
Run Code Online (Sandbox Code Playgroud)

回答你的第二个问题,你应该使用()s:

# bash -c 'exit 1' || ( echo hi ; echo there )
hi
there
Run Code Online (Sandbox Code Playgroud)