一尘不染

是否终止任何命令返回非零值的shell脚本?

linux

我有一个Bash shell脚本,可以调用许多命令。如果任何命令返回的非零值,我都希望shell脚本自动返回1的返回值。

如果不显式检查每个命令的结果,是否有可能?

例如

dosomething1
if [[ $? -ne 0 ]]; then
    exit 1
fi

dosomething2
if [[ $? -ne 0 ]]; then
    exit 1
fi

阅读 354

收藏
2020-06-02

共1个答案

一尘不染

将此添加到脚本的开头:

set -e

如果一个简单的命令以非零退出值退出,这将导致shell立即退出。简单命令是不属于if,while或直到测试的一部分的任何命令,也不是&&或||的一部分的任何命令。清单。

有关更多详细信息,请参见“ set”内部命令上的bash(1)手册页

我个人几乎以“ set -e”开始几乎所有的shell脚本。当某个脚本在中间出现故障并顽固地破坏了其余脚本的假设时,固执地继续执行脚本确实很烦人。

2020-06-02