我正在写一个 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/null
,exit 3
仍然被解雇的人echo 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)