我正在编写一个 script.sh,如下所示:
ls a || ls > /dev/null || echo "both command fails"; exit 3
echo 5 # not showed up
我希望exit 3
仅当 command1 和 command2 都失败时才执行。但似乎即使ls > /dev/null
没问题,exit 3
仍然被解雇从而使echo 5
从未出现过。
我能做些什么来解决这个问题吗?
答案1
问题是||
绑定比 更紧密;
,因此您的第一行由两个命令组成:第一个是复合命令:ls || ls || echo
第二个只是exit 3
。正如 meuh 的评论中提到的,你应该写
ls a || ls > /dev/null || { echo "both command fails"; exit 3; }
echo 5 # not showed up