【发布时间】:2017-01-10 15:18:57
【问题描述】:
虽然我知道 shell 脚本不关心错误已有 20 年了,但默认情况下,我一直对这种粗心大意感到好笑。即使您明确要求他们不要吞下错误并遵循仍然不会发生的崩溃早期原则。
参考Automatic exit from bash shell script on error,set +e 似乎不起作用,这里有一个简短的例子:
#!/bin/bash -vx
set +e
apt-get install nonexisting1
apt-get install nonexisting2
set -e
输出:
#!/bin/bash -vx
set +e
+ set +e
apt-get install nonexisting1
+ apt-get install nonexisting1
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package nonexisting1 <--- first error, now stop!
apt-get install nonexisting2 <--- why do we continue here?
+ apt-get install nonexisting2
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package nonexisting2
set -e
+ set -e
如何确保我的脚本执行所有命令都没有错误或立即停止?
我不喜欢在几乎每一行的末尾写|| exit 1。
【问题讨论】:
-
set +e将选项关闭。
标签: linux bash shell ubuntu error-handling