用 bash trap 在退出时自动清理临时文件
为脚本注册清理函数:无论是正常结束、Ctrl-C 中断还是被 kill,都能自动删除临时文件、释放资源。
在脚本开头加入 trap 'rm -rf "$TMPDIR"' EXIT INT TERM,无论脚本如何结束都会清理临时文件。
01命令
命令
$ trap 'rm -rf "$TMPDIR"; echo cleaned' EXIT INT TERM02作用说明
trap 让 bash 在特定事件发生时执行指定命令:EXIT 在脚本以任何方式结束时触发(成功、出错或信号),INT 和 TERM 则捕获 Ctrl-C 和 kill,确保进程退出前先完成同样的清理。这一行就能取代散落在脚本每个退出点的脆弱清理代码。trap 应放在创建临时目录之后,动作用单引号包裹以便变量在触发时才展开;处理函数除了删除文件,还可以用来发送通知或还原被修改的文件。
03风险
!注意: 千万不要写未加引号的 trap 'rm -rf $TMPDIR' 且不做检查——一旦 TMPDIR 为空,处理函数就变成 rm -rf /;请始终给变量加引号并在动作内部检查是否为空。
04撤销
✓无需撤销——该命令不会改变持久状态。
05来源
- signal(7) — Linux manual page依据: Reference for SIGINT/SIGTERM semantics, the signals scripts most commonly need to trap for cleanup.
- bash(1) — Linux manual page依据: Documents trap: EXIT runs its action on shell exit, INT/TERM on the corresponding signals; a trap set without arguments resets it.
最后验证: 2026-09-18 · 分类: 开发者