为什么Bash陷阱不捕获未定义变量的退出状态?

前端之家收集整理的这篇文章主要介绍了为什么Bash陷阱不捕获未定义变量的退出状态?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要使用陷阱捕获 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.

猜你在找的Bash相关文章