前言
写shell的时候 经常要求执行异常或者中断脚本之后 需要清理现场或者提示用户
之前一直是用if判断命令执行结果来做的 比较麻烦 而且繁琐 小脚本可以 稍微复杂一点的脚本就麻烦了
这个时候 trap 就可以发挥作用了
参考文档:
http://linux.51yip.com/search/trap
常用方式
trap –help 查看文档
1 | trap 当接受信号执行的命令 接受那些信号 |
监听信号量
监听指定信号量 触发命令
脚本内容如下:
1 |
|
使用 ps获取这个脚本的pid 使用kill 信号量 pid 向进程发送信号量
即可
对脚本执行情况处理
EXIT
脚本退出的时候 触发
1 | tee test.sh <<- 'EOF' |
DEBUG
脚本每条命令执行的时候 都会触发一次
1 | tee test.sh <<- 'EOF' |
ERR
脚本执行异常的时候 触发
1 | tee test.sh <<- 'EOF' |
RETURN
当存在函数返回或者source 执行其他脚本的时候 触发
1 | tee test.sh <<- 'EOF' |
总结
一个好的脚本 应该是不管成功失败 都应该做好相关处理
使用 trap 能够更好的处理脚本执行过程中各种结果 使脚本更加好用