我有一个简单的脚本
trap 'echo exit' EXIT
while true; do sleep 1; done
并且它在不同的shell中表现不同:
$ bash tst.sh
^Cexit
$ dash tst.sh
^C
$ zsh tst.sh
^C
$ sh tst.sh
^Cexit
所以我不确定它应该如何操作以及是否完全指定。
答案 0 :(得分:2)
EXIT陷阱在每个shell中的工作方式都不一样。几个例子:
exit
来恢复默认行为。我建议你实际捕获信号然后退出,它应该是便携式的 穿过大多数炮弹:
$ cat trap
trap 'echo exit; exit' INT TERM # and other signals
while true; do sleep 1; done
$ bash trap
^Cexit
$ dash trap
^Cexit
$ zsh trap
^Cexit
$ ksh trap
^Cexit
$ mksh trap
^Cexit
$ busybox sh trap
^Cexit