为什么我的ERR陷阱会因TERM信号而被执行?

时间:2018-04-29 08:30:15

标签: bash terminate

在bash脚本中,我设置了两个陷阱:一个用于TERM信号,一个用于ERR信号。

当我将TERM信号发送到脚本时,它会执行ERR陷阱,而不是TERM陷阱。

我在两台电脑上试过了。在一个,Ubuntu 14.04.5 LTS,脚本工作正常。在另一个。科学Linux 7.3(氮气),发生错误。

以下是剧本:

#!/bin/bash
trap "echo caught signal SIGTERM; exit 1;" SIGTERM
trap "echo caught signal SIGINT; exit 1;" SIGINT
trap "echo caught signal ERR; exit 1;" ERR

set -e
sleep 50

echo grep with err
grep sasas sasasa

当我在脚本PID上执行kill -TERM -PID时,我得到以下内容:

Terminated
caught signal ERR

如果sleep命令结束,我会得到以下内容:

grep with err
grep: sasasa: No such file or directory
caught signal ERR

可能是什么问题?如何强制为SIGTERM信号执行TERM陷阱?

感谢

0 个答案:

没有答案