小编典典

如果任何命令返回非零值,则中止 shell 脚本

all

我有一个调用许多命令的 Bash shell 脚本。

如果任何命令返回非零值,我希望 shell 脚本自动退出并返回值 1。

如果不明确检查每个命令的结果,这可能吗?

例如,

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

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

阅读 208

收藏
2022-03-10

共1个答案

小编典典

将此添加到脚本的开头:

set -e

如果一个简单的命令以非零退出值退出,这将导致 shell 立即退出。简单命令是任何不属于 if、while 或 until 测试的命令,或者不属于 && 或
|| 的任何命令。列表。

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

我个人几乎所有的 shell 脚本都是用“set -e”开始的。当中间出现故障并打破脚本其余部分的假设时,让脚本顽固地继续下去真的很烦人。

2022-03-10