在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陷阱?
感谢