我需要使用陷阱捕获Bash脚本中的错误条件.出于这个原因,我在我的脚本中都有set -eAND set -u.但是我注意到脚本中定义的陷阱没有得到错误状态.例如:
set -e
set -u
on_exit() {
exit_status=$?
echo exit_status=$exit_status
exit $exit_status
}
trap on_exit EXIT
X=$Y
Run Code Online (Sandbox Code Playgroud)
上面的代码段打印:
line 12: Y: unbound variable
exit_status=0
Run Code Online (Sandbox Code Playgroud)
而我期望错误状态为非零.删除后set -e,错误状态被正确报告为1.
这是什么原因?
Bash版本:GNU bash,版本3.2.57(1)-release(x86_64-apple-darwin15)