我有一个调用许多命令的 Bash shell 脚本。
如果任何命令返回非零值,我希望 shell 脚本自动退出并返回值 1。
如果不明确检查每个命令的结果,这可能吗?
例如,
dosomething1 if [[ $? -ne 0 ]]; then exit 1 fi dosomething2 if [[ $? -ne 0 ]]; then exit 1 fi
将此添加到脚本的开头:
set -e
如果一个简单的命令以非零退出值退出,这将导致 shell 立即退出。简单命令是任何不属于 if、while 或 until 测试的命令,或者不属于 && 或 || 的任何命令。列表。
有关更多详细信息,请参见“set”内部命令的bash(1) 手册页。
我个人几乎所有的 shell 脚本都是用“set -e”开始的。当中间出现故障并打破脚本其余部分的假设时,让脚本顽固地继续下去真的很烦人。