使用trap func_trap INT TERM EXIT
之类的内容时:
func_trap () {
...some commands...
}
在功能块中是否有办法检测 哪个 陷阱已经调用它?
类似的东西:
func_trap () {
if signal = INT; then
# do this
else
# do that
fi
}
或者我是否需要为每种陷阱类型编写一个单独的函数来执行不同的操作? 是否存在保存最新接收信号的bash变量?
提前致谢!
答案 0 :(得分:72)
您可以实现自己的陷阱功能,自动将信号传递给函数:
trap_with_arg() {
func="$1" ; shift
for sig ; do
trap "$func $sig" "$sig"
done
}
$ trap_with_arg func_trap INT TERM EXIT
func_trap的第一个参数将是信号的名称。
答案 1 :(得分:6)
没有文档提示任何包含被捕获信号的参数或变量,因此您必须为每个想要表现不同的陷阱编写一个函数/陷阱语句。