shell – 收到SIGINT或SIGTERM时是否需要执行trap EXIT?
发布时间:2020-12-15 22:57:46 所属栏目:安全 来源:网络整理
导读:我有一个简单的脚本 trap 'echo exit' EXITwhile true; do sleep 1; done 并且它在不同的shell中表现不同: $bash tst.sh^Cexit$dash tst.sh^C$zsh tst.sh^C$sh tst.sh^Cexit 所以我不确定它应该如何操作以及它是否被指定. 解决方法 EXIT陷阱在每个shell中的
我有一个简单的脚本
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 所以我不确定它应该如何操作以及它是否被指定. 解决方法
EXIT陷阱在每个shell中的工作方式都不一样.几个例子:
>在dash和zsh中,它仅由脚本中的常规退出触发. 我建议你实际捕获信号然后退出,它应该是便携式的 $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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |