trap命令使用

在有些情况下,我们不希望自己的shell脚本在运行时刻被中断,比如说我们写得shell脚 
本设为某一用户的默认shell,使这一用户进入系统后只能作某一项工作,如数据库备份, 我 
们可不希望用户使用ctrl+C之类便进入到shell状态,做我们不希望做的事情。这便用到了信号 

处理。


trap命令用于指定在接收到信号后将要采取的行动。
trap命令的一种常见用途是在脚本程序被中断时完成清理工作。历史上,shell总是用数字来代表信号,而新的脚本程序应该使用信号的名字。你可以在命令提示符下输入命令trap -l来查看信号编号及其关联的名称,在使用信号名时需要省略SIG前缀。
trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名
trap command signal
如果要重置某个信号的处理条件到其默认值,只需简单的将command设置为-。如果要忽略某个信号,就把command设置为空字符串‘’。一个不带参数的trap命令将列出当前设置的信号及其行动的清单。

注意:对于类似INT的信号,如果捕获后,在trap设置的命令中不提供退出机制,程序将无法通过 Ctl+C 停止。




  1 #!/bin/bash
  2 
  3 trap "bash $0 && kill $$" 1 2                                                                      
  4 while ((1))
  5 do
  6     echo $0, $$
  7     sleep 2
  8     echo "loop"
  9 done


脚本无法通过ctrl-c退出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值