加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 01:15:01 所属栏目:安全 来源:网络整理
导读:我需要使用陷阱捕获 Bash脚本中的错误条件.出于这个原因,我在我的脚本中都设置了-e AND set -u.但是我注意到脚本中定义的陷阱没有得到错误状态.例如: set -eset -uon_exit() { exit_status=$? echo exit_status=$exit_status exit $exit_status}trap on_exi
我需要使用陷阱捕获 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读