Linux ERR后面的实际信号是什么

Linux ERR后面的实际信号是什么,linux,bash,error-handling,signals,bash-trap,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信号,但似乎没有定义它 例如:“如果设置了错误陷阱,则在sh

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

trap "echo there was an error; exit 1;" ERR
我似乎在手册页中找不到什么信号
ERR
?我假设它是
SIGQUIT
,但我不能确定

man 7 signal
只有您期望的正常信号
SIGTERM SIGQUIT SIGINT

man trap
引用了
ERR
信号,但似乎没有定义它

例如:“
如果设置了错误陷阱,则在shell退出之前执行。

类似于
man trap
,它引用了
ERR
,但没有根据我所看到的来定义它

捷径
ERR
后面的实际信号是什么?(在正常信号中,如
man 7信号中所示)


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

没有与
陷阱
信号规范
ERR
对应的信号

ERR
是由
bash
内部实现的信号规范之一。[注意1]如果启用了
trap ERR
,则bash将在与启用
set-e
时退出的情况完全相同的情况下调用相应的处理程序。(因此,它不再比set-e更“可靠”,而是更加灵活。)

其他与任何信号不对应的特殊
陷阱
名称有
退出
调试
返回

帮助陷阱
将解释这些信号规范的含义


注意事项:

  • 实际上,所有的信号规范都是通过
    bash
    实现的,但是大多数都是通过
    bash
    捕获信号然后执行信号处理程序来实现的。特殊的只是执行信号处理程序
  • man bash