如果第一个命令失败则执行两个命令

AGa*_*yer 3 shell

我正在写一个 script.sh,如:

ls a || ls > /dev/null || echo "both command fails"; exit 3
echo 5 # not showed up
Run Code Online (Sandbox Code Playgroud)

我希望exit 3只有在 command1 和 command2 都失败时才执行。但似乎即使没问题ls > /dev/nullexit 3仍然被解雇的人echo 5从未出现过。

我能做些什么来解决这个问题?

Tho*_*ker 5

问题是||绑定比 更紧密;,因此您的第一行包含两个命令:第一个是复合命令:ls || ls || echo第二个是 just exit 3。正如 meuh 在评论中提到的,你应该写

ls a || ls > /dev/null || { echo "both command fails"; exit 3; }
echo 5 # not showed up
Run Code Online (Sandbox Code Playgroud)