Trap命令简介
一、基本概念
trap是一个shell内建命令,它用来在脚本中指定信号如何处理。比如,按Ctrl+C会使脚本终止执行,实际上系统发送了SIGINT信号给脚本进程,SIGINT信号的默认处理方式就是退出程序。如果要在Ctrl +C不退出程序,那么就得使用trap命令来指定一下SIGINT的处理方式了。trap命令不仅仅处理Linux信号,还能对脚本退出(EXIT)、调试(DEBUG)、错误(ERR)、返回(RETURN)等情况指定处理方式。
二、基本格式
格式:trap "commands" signals
当shell接收到signals指定的信号时,执行commands命令。
1、格式:trap signals
如果没有指定命令部分,那么就将信号处理复原。比如 trap INT 就表明恢复Ctrl+C退出
2、格式:trap "" signals
忽略信号signals,可以多个,比如 trap "" INT 表明忽略SIGINT信号,按Ctrl+C也不能使脚本退出。又如 trap "" HUP 表明忽略SIGHUP信号,即网络断开时也不能使脚本退出
3、格式:trap -p signal
把当前的trap设置打印出来
4、格式:trap -l
把所有信号打印出来
5、格式:trap "commands" EXIT
脚本退出时执行commands指定的命令
三、实例分析
1、写一个脚本ping A、B、C类IP地址探测所有的主机是否在线;
说明:如果范围为{1..255}时,执行时间比较长,此时ctrl+c中断时无法中断,这时我们可以使用tarp命令,当执行ctrl+c时,会执行一个命令或者行数,见例2
2、用trap实现中断执行;
说明:此时执行ctrl+c时将调用quitScript函数,执行退出。
原创文章,作者:wxdz_2004(古雨秋),如若转载,请注明出处:http://www.178linux.com/4199