我有一个用于制作项目的bash脚本。我在脚本顶部有set -e
以在任何组件发生故障时中断执行。
其中一个命令会失败,但它很自然会失败。我希望脚本的行为如下:
答案 0 :(得分:3)
我建议:
set +e
# your command which would fail
set -e
或
your_command_which_would_fail || true
答案 1 :(得分:1)
标志set -e
有一堆豁免,在执行的命令失败后(exitcode≠0)它不会立即导致中止。其中包括@cyrus提出的连接(a || b
和类似)。有关详细信息,请参阅man bash
;它有点难找,也许这会有所帮助:
man bash | grep -B 20 -A 10000 'Exit.*immediately' | less
我的建议是将其放在if
:
if command
then
: "worked nicely"
else
: "failed, but we don't want to abort"
fi
或@ Cyrus的简短版本:
command || true # do not abort in case of 'set -e'