Shell面试题更新 2026-08-03

在 Shell 脚本中,trap 命令的具体用法是什么?请说明如何通过 trap 来捕捉和处理信号,并简述其可用的信号种类和常见处理方式。

考察说明

考查对 Shell 脚本中 trap 命令功能、语法和实际应用的理解。

回答思路

  1. 【回答框架 1】trap 命令用于在 Shell 脚本中捕捉指定的信号并执行预定义动作,语法为 trap '动作' 信号列表,动作可以是命令序列或函数,信号常用 -INT、-TERM 或 -EXIT。
  2. 【回答框架 2】常见用途包括在脚本退出时清理临时文件,用 rm -f 和 exit 恢复默认行为;在收到 -INT 或 -TERM 时执行应急处理,如保存状态或优雅终止子进程。
  3. 【回答框架 3】trap 不影响信号默认行为,若要忽略信号可指定空动作,如 trap '' -INT;也可用 - 恢复默认处理,设置多个信号需用空格分隔。
  4. 【回答框架 4】注意 -EXIT 是伪信号,在脚本任何退出点触发,-DEBUG 在每条命令前触发,-ERR 在命令失败时触发,需按需选择避免误触发。
  5. 【回答框架 5】建议将 trap 放在脚本开头定义,动作中避免复杂命令,处理完需 exit 退出,防止重复执行。
  6. 【关键点 1】trap 用于捕捉信号并执行指定命令序列,语法支持列表。
  7. 【关键点 2】常见信号 -INT、-TERM、-EXIT,处理动作需定义清晰。
  8. 【关键点 3】trap '' -INT 忽略信号,trap - -INT 恢复默认。
  9. 【关键点 4】使用后应 exit 避免脚本继续执行。
  10. 【易错点 1】误用 -EXIT 可能在子 shell 中意外触发,影响流程。
  11. 【易错点 2】动作中不 exit 会导致陷阱重复执行。