微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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()函数等).陷阱会捕获所提到的信号,你不需要任何明确的处理.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐