trap linux

trap命令用于指定在接收到信号后将要采取的行动,trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名.

信     号

说     明

HUP(1)

挂起,通常因终端掉线或用户退出而引发

INT(2)

中断,通常因按下Ctrl+C组合键而引发

QUIT(3)

退出,通常因按下Ctrl+\组合键而引发

ABRT(6)

中止,通常因某些严重的执行错误而引发

ALRM(14)

报警,通常用来处理超时

TERM(15)

终止,通常在系统关机时发送


一. trap捕捉到信号之后,可以有三种反应方式:
  1. 执行一段程序来处理这一信号
  2. 接受信号的默认操作
  3. 忽视这一信号

二. 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

标签:Linux, Shell

评论已关闭