trap 命令用于指定在接收到信号后将要采取的动作,常见的用途是在脚本程序被中断时完成清理工作。
当shell接收到sigspec指定的信号时,arg参数(命令)将会被读取,并被执行。
trap 信号参数说明
信号 说明 HUP(1) # 挂起,通常因终端掉线或用户退出而引发 INT(2) # 中断,通常因按下Ctrl+C组合键而引发 QUIT(3) # 退出,通常因按下Ctrl+组合键而引发 ABRT(6) # 中止,通常因某些严重的执行错误而引发 ALRM(14) # 报警,通常用来处理超时 TERM(15) # 终止,通常在系统关机时发送
trap 反应方式
trap捕捉到信号之后,可以有三种反应方式: 1、执行一段程序来处理这一信号 2、接受信号的默认操作 3、忽视这一信号
第一种形式的trap命令在shell接收到 signal list 清单中数值相同的信号时,将执行双引号中的命令串:
trap 'commands' signal-list # 单引号,要在shell探测到信号来的时候才执行命令和变量的替换,时间一直变
trap "commands" signal-list # 双引号,shell第一次设置信号的时候就执行命令和变量的替换,时间不变
例如: trap "exit 1" HUP INT PIPE QUIT TERM 表示当shell收到HUP INT PIPE QUIT TERM这几个命令时,当前执行的程序会读取参数“exit 1”,并将它作为命令执行。