我在几个地方(包括SO)读到-e
被认为是“糟糕的形式”,并且在出现任何错误时退出脚本都是不可靠的。处理错误的更好方法似乎是使用trap
, 像这样:
trap "echo there was an error; exit 1;" ERR
我似乎无法在手册页中找到什么信号ERR
实际上是?我假设它是SIGQUIT
但我无法确定。
man 7 signal
只有您期望的正常信号SIGTERM SIGQUIT SIGINT
, etc.
man trap
有参考ERR
信号,但似乎没有定义它。
ex: "A trap on ERR, if set, is executed before the shell exits.
"
man bash
类似于man trap
其中提到了ERR
但根据我所看到的,并没有定义它。
快捷方式背后的实际信号是什么ERR
? (在正常信号中,如man 7 signal
).
我更喜欢捕获实际的信号名称而不是速记版本,尽管我意识到它们会产生相同的结果(捕获脚本中命令的任何错误,然后抛出到处理程序)。
没有对应的信号trap
信号规格ERR
.
ERR
是内部实现的信号规范之一bash
。 [注1] 如果trap ERR
启用后,bash 将在与退出时完全相同的情况下调用相应的处理程序set -e
已启用。 (因此,它不再“可靠”)set -e
但它更加灵活。)
其他特殊trap
不对应于任何信号的名称是EXIT
, DEBUG
and RETURN
.
help trap
将解释这些信号规格的含义。
Notes:
- 实际上,所有信号规范都是通过
bash
,但大多数都是通过bash
捕获信号然后执行信号处理程序。特殊的只涉及执行信号处理程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)