bash – 是否需要指定EXIT以外的陷阱?

前端之家收集整理的这篇文章主要介绍了bash – 是否需要指定EXIT以外的陷阱?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我看到很多shell脚本:
trap cmd 0 1 2 3 13 15 # EXIT HUP INT QUIT PIPE TERM

在目前我可以访问的每个shell中,0以外的所有陷阱都是冗余的,如果只是指定了陷阱,则在接收到信号时将执行cmd:

trap cmd 0

后一规格是否足够,或者做一些贝壳需要指定其他信号?

@H_301_10@
为了确保EXIT信号处理程序不会执行两次(这几乎总是不是你想要的),它应该总是设置为在EXIT信号处理程序本身的定义内被忽略或重置。

对于在程序中为它们定义了多个信号处理程序的信号也是如此。

# reset
trap 'excode=$?; cmd; trap - EXIT; echo $excode' EXIT HUP INT QUIT PIPE TERM

# ignore
trap 'excode=$?; trap "" EXIT; cmd; echo $excode' EXIT HUP INT QUIT PIPE TERM
原文链接:https://www.f2er.com/bash/388164.html

猜你在找的Bash相关文章