我需要使用陷阱捕获
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.