rah*_*huL 3 linux bash centos interrupt sigint
我在bash中有一个捕获键盘中断的函数.该函数如下所示:
user_interrupt(){
echo -e "\n\nKeyboard Interrupt detected."
sleep 2
echo -e "\n Cleaning up..."
rm -rf /usr/local/src/mysources
}
Run Code Online (Sandbox Code Playgroud)
现在,在同一个脚本,我有一个称为另一个功能install(),使用标准从源一前一后安装了几包./configure,make,make install的过程.我们的想法是在一个接一个地运行3个安装时捕获用户中断.问题是,我在哪里发表以下声明:
trap user_interrupt SIGINT
trap user_interrupt SIGTSTP
Run Code Online (Sandbox Code Playgroud)
那么我应该将它作为install()函数内的第一个语句吗?或者我需要一个if-else条件?
我想你想exit在检测到用户中断后(当然在完成清理行为后).如果是这样,你需要在函数行exit后面说rm -rf ....除非您这样做,否则trap会捕获一个信号SIGINT,例如,在您的user_interrupt函数中执行任务,脚本将继续执行.
要回答另一个问题,只需在脚本顶部定义您提到的函数,然后定义两个trap命令,然后定义剩余的代码(install()函数等). trap将捕获所提到的信号,你不需要任何明确的处理.
| 归档时间: |
|
| 查看次数: |
2325 次 |
| 最近记录: |