加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 如何在shell脚本中断时触发命令?

发布时间:2020-12-15 22:41:35 所属栏目:安全 来源:网络整理
导读:当 shell脚本在执行过程中被中断时,我想发出像“rm -rf /etc/XXX.pid”这样的命令.喜欢使用CTRL C. 任何人都可以帮我在这做什么? 解决方法 虽然它可能会让许多人感到震惊,但您可以使用bash内置陷阱来捕获信号:-) 好吧,至少那些可以被捕获,但CTRL-C通常与INT
当 shell脚本在执行过程中被中断时,我想发出像“rm -rf /etc/XXX.pid”这样的命令.喜欢使用CTRL C.
任何人都可以帮我在这做什么?

解决方法

虽然它可能会让许多人感到震惊,但您可以使用bash内置陷阱来捕获信号:-)

好吧,至少那些可以被捕获,但CTRL-C通常与INT信号相关联.您可以捕获信号并执行任意代码.

以下脚本将要求您输入一些文本,然后将其回显给您.如果偶然,你生成一个INT信号,它只会咆哮你并退出:

#!/bin/bash

exitfn () {
    trap SIGINT              # Restore signal handling for SIGINT
    echo; echo 'Aarghh!!'    # Growl at user,exit                     #   then exit script.
}

trap "exitfn" INT            # Set up SIGINT trap to call function.

read -p "What? "             # Ask user for input.
echo "You said: $REPLY"

trap SIGINT                  # Restore signal handling to previous before exit.

测试运行记录如下(完全输入的行,在任何条目之前按下CTRL-C的行,以及在按CTRL-C之前具有部分条目的行):

pax> ./testprog.sh 
What? hello there
You said: hello there

pax> ./testprog.sh 
What? ^C
Aarghh!!

pax> ./qq.sh
What? incomplete line being entere... ^C
Aarghh!!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读