trap命令用于指定在接收到信号后将要采取的行动,trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名.
信 号 |
说 明 |
HUP(1) |
挂起,通常因终端掉线或用户退出而引发 |
INT(2) |
中断,通常因按下Ctrl+C组合键而引发 |
QUIT(3) |
退出,通常因按下Ctrl+\组合键而引发 |
ABRT(6) |
中止,通常因某些严重的执行错误而引发 |
ALRM(14) |
报警,通常用来处理超时 |
TERM(15) |
终止,通常在系统关机时发送 |
一. trap捕捉到信号之后,可以有三种反应方式:
二. trap对上面三种方式提供了三种基本形式:
第一种形式的trap命令在shell接收到signal list清单中数值相同的信号时,将执行双
引号中的命令串:
trap 'commands' signal-list
trap "commands" signal-list
第二种形式的trap命令,为了恢复信号的默认操作:
trap signal-list
第三种形式的trap命令允许忽视信号:
trap " " signal-list
在第一种形式中,执行命令,对于双引号和单引号是有区别的。
#/bin/bash #忽略信号 #trap " " 2 #双引号,shell第一次设置信号的时候就执行命令和变量的替换,时间不变 trap "echo `date`:can not terminate by ctrl+C" 2 #单引号,要在shell探测到信号来的时候才执行命令和变量的替换,时间一直变 trap 'echo `date`:can not terminate by ctrl+C' 2 while [ 1 ] do echo -n "input a num : " read num if [ $num -eq -1 ] then echo "bye" break fi echo "you have enter $num" done