linux – 在bash中捕获键盘中断

我在bash中有一个捕获键盘中断的函数.该函数如下所示:

user_interrupt(){
        echo -e "\n\nKeyboard Interrupt detected."
        sleep 2
        echo -e "\n Cleaning up..."
        rm -rf /usr/local/src/mysources
}

现在,在同一个脚本中,我有一个名为install()的函数,它使用标准的./configure,make,make install进程从源代码中依次安装一些软件包.我们的想法是在一个一个地运行3个安装时捕获用户中断.问题是,我在哪里发表以下声明:

trap user_interrupt SIGINT
trap user_interrupt SIGTSTP

那么我应该将它作为install()函数中的第一个语句吗?或者我是否需要if-else条件?

解决方法:

我想你想在检测到用户中断后退出(当然在完成清理行为之后).如果是这样,你需要在函数中的rm -rf …行之后退出.除非你这样做,否则trap会捕获信号SIGINT,例如,在user_interrupt函数中执行任务,脚本将继续执行.

要回答另一个问题,只需在脚本顶部定义您提到的函数,然后定义两个陷阱命令,然后定义剩余的代码(install()函数等).陷阱会捕获所提到的信号,你不需要任何明确的处理.

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...