shell trap用法
在Shell脚本中,`trap`命令用于设置在接收到特定信号时执行指定的操作。它允许你在脚本执行过程中捕获和处理信号,以便在需要时采取适当的措施。`trap`命令的基本语法如下: ```
trap 'command' signal ```
其中,`command`表示在接收到指定信号时要执行的命令或代码块,`signal`表示要捕获的信号名称或信号编号。
以下是一些常见的`trap`用法: 1. 捕获并处理信号: ```
trap 'echo \"Signal received.\"' SIGINT ```
上述示例中,当接收到`SIGINT`信号(通常是通过键盘输入的`Ctrl+C`发送的中断信号)时,将执行`echo \"Signal received.\"`命令。 2. 忽略信号: ```
trap '' SIGTERM ```
上述示例中,将忽略`SIGTERM`信号(通常是通过`kill`命令发送的终止信号),不执行任何操作。
3. 恢复默认处理: ```
trap - SIGINT ```
上述示例中,将恢复`SIGINT`信号的默认处理方式,即中断脚本的执行。 4. 执行命令后恢复默认处理: ```
trap 'command; trap - signal' signal ```
上述示例中,当接收到指定信号时,先执行指定的命令或代码块,然后恢复信号的默认处理方式。
请注意,`trap`命令的作用范围是当前Shell进程及其子进程。在脚本中可以多次使用`trap`命令来设置不同的信号处理方式,也可以使用`trap - signal`来恢复信号的默认处理方式。 要了解特定信号的名称或编号,可以使用`trap -l`命令查看系统支持的信号列表。