gpt4 book ai didi

bash - 为什么 Bash 陷阱不捕获 undefined variable 的退出状态?

转载 作者:行者123 更新时间:2023-11-29 08:55:16 25 4
gpt4 key购买 nike

我需要使用陷阱捕获 Bash 脚本中的错误情况。出于这个原因,我在我的脚本中同时使用了 set -eset -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 - 为什么 Bash 陷阱不捕获 undefined variable 的退出状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51154169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com