在使用 Shell 脚本时,你是否遇到过这种情况:一、trap 是什么?
trap 用于捕获信号,并在脚本退出或中断时执行指定命令。
二、trap 基本语法
三、常见信号说明
四、捕获 Ctrl+C(最常用)
#!/bin/bashtrap 'echo "检测到 Ctrl+C,正在退出..."' INTwhile true; doecho "运行中..."sleep 2done
五、脚本退出自动执行(重点)
trap '命令' EXIT示例:#!/bin/bashtrap 'echo "脚本结束,执行清理..."' EXITecho "执行任务..."sleep 2
六、实战:自动删除临时文件
#!/bin/bashtmp_file="/tmp/test.$"touch $tmp_filetrap "rm -f $tmp_file" EXITecho "临时文件创建:$tmp_file"sleep 10
七、多个信号同时处理
trap 'echo "清理资源..."' INT TERM EXIT
Ctrl+C
kill
脚本退出
八、忽略信号
九、恢复默认行为
十、trap + set -e(高级用法)
trap 'echo "发生错误,清理中..."' EXIT
十一、真实运维场景
trap 'rm -rf /tmp/deploy_*' EXIT
trap 'echo "服务正在停止..."' TERM
十二、常见错误
trap echo hello EXIT # 注意:这个是错误写法
十三、小结
trap 是 Shell 脚本中非常重要的“善后机制”。脚本异常退出时的资源清理问题
一句话总结:
trap 就是给脚本加一个“退出保险”。
#!/bin/bashcleanup() { echo"清理资源..." rm -f /tmp/tmpfile}trap cleanup EXIT INT TERM