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

我看到很多shell脚本:
trap cmd 0 1 2 3 13 15 # EXIT HUP INT QUIT PIPE TERM

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

trap cmd 0

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

为了确保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

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...