我需要使用陷阱捕获
Bash脚本中的错误条件.出于这个原因,我在我的脚本中都设置了-e AND set -u.但是我注意到脚本中定义的陷阱没有得到错误状态.例如:
set -e set -u on_exit() { exit_status=$? echo exit_status=$exit_status exit $exit_status } trap on_exit EXIT X=$Y
上面的代码段打印:
line 12: Y: unbound variable exit_status=0
而我期望错误状态为非零.删除set -e后,错误状态将正确报告为1.
这是什么原因?
Bash版本:GNU bash,版本3.2.57(1)-release(x86_64-apple-darwin15)
从4.0到4.1之间的更改日志:
x. Fixed a bug that caused $? to not be set correctly when referencing an unset variable with set -u and set -e enabled.