我有一个简单的脚本
trap 'echo exit' EXIT
while true; do sleep 1; done
它在不同的外壳中表现不同:
$ bash tst.sh
^Cexit
$ dash tst.sh
^C
$ zsh tst.sh
^C
$ sh tst.sh
^Cexit
所以我不确定它应该如何运作以及它是否被指定。
我有一个简单的脚本
trap 'echo exit' EXIT
while true; do sleep 1; done
它在不同的外壳中表现不同:
$ bash tst.sh
^Cexit
$ dash tst.sh
^C
$ zsh tst.sh
^C
$ sh tst.sh
^Cexit
所以我不确定它应该如何运作以及它是否被指定。
EXIT
陷阱在每个外壳中的工作方式都不相同。几个例子:
exit
。我建议您实际捕获信号然后退出,它应该可以在大多数 shell 中移植:
$ 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