trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名。 请记住,脚本程序通常是以从上到下的顺序解释执行的,所以必须在你想保护的那部分代码以前指定trap命令。 表2-11列出了X/Open规范里面规定的能够被捕获的比较重要的一些信号(括号里面的数字是传统的信号编号)。更多细节请参考signal在线手册的第七部分(man 7 signal)。 信 号说 明HUP(1)挂起,通常因终端掉线或用户退出而引发INT(2)中断,通常因按下Ctrl+C组合键而引发QUIT(3)退出,通常因按下Ctrl+组合键而引发ABRT(6)中止,通常因某些严重的执行错误而引发ALRM(14)报警,通常用来处理超时TERM(15)终止,通常在系统关机时发送 下面的脚本演示了一些简单的信号处理方法:
运行这个脚本,在每次循环时按下Ctrl+C组合键(或任何你系统上设定的中断键),我们将得到如下所示的输出: 实验解析 接下来,脚本程序再次调用trap命令,这次是指定 当一个INT信号出现时不执行任何命令。脚本程序然后重新创建临时文件并进入第二个while循环。这次当用户按下Ctrl+C组合键时,没有语句被指定 执行,所以采取默认处理方式,即立即终止脚本程序。因为脚本程序被立即终止了,所以永远也不会执行最后的echo和exit语句。 unset命令的作用是从环境中删除变量或函数。这个命令不能删除shell本身定义的只读变量(如IFS)。这个命令并不常用。
使用foo=语句产生的效果与上面脚本中的unset命令产生的效果
(责任编辑:IT) |