ERR背后的实际信号是什么?

时间:2014-10-08 15:21:09

标签: linux bash error-handling signals bash-trap

我在几个地方(包括SO)读过-e被认为是“糟糕的形式”,并且在任何错误退出脚本时都不可靠。处理错误的更好方法似乎是使用trap,因此:

trap "echo there was an error; exit 1;" ERR

我似乎无法在手册页中找到ERR实际上是什么信号?我假设它是SIGQUIT,但我无法确定。

man 7 signal

只有您期望的正常信号SIGTERM SIGQUIT SIGINT等。

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中看到的正常信号中)。

我更喜欢捕获实际的信号名而不是速记版,尽管我意识到它们会产生相同的结果(从脚本中的命令中捕获任何错误然后抛给处理程序)。

1 个答案:

答案 0 :(得分:4)

没有与trap信号规范ERR对应的信号。

ERRbash内部实施的信号规范之一。 [注1]如果启用了trap ERR,那么bash将在完全相同的情况下调用相应的处理程序,就像启用set -e时一样。 (因此,它不再比set -e更“可靠”,但它更灵活。)

与任何信号不对应的其他特殊trap名称为EXITDEBUGRETURN

help trap将解释这些信号规范的含义。


备注:

  1. 实际上,所有信号规范都是由bash实现的,但大部分是通过bash捕获信号然后执行信号处理程序来实现的。特殊的只涉及执行信号处理程序。