我有一个用于制作项目的bash脚本。我在脚本顶部有set -e
,以便在任何组件出现故障时中断执行。
其中一个命令会失败,但它很自然会失败。我希望脚本的行为如下:
我建议:
set +e
# your command which would fail
set -e
要么
your_command_which_would_fail || true
标志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'