我在 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 ...
行之后说 exit
。除非您这样做,否则 trap
会捕获一个信号 SIGINT
,例如,在您的 user_interrupt
函数中执行任务,脚本将继续执行。
要回答另一个问题,只需定义您在脚本顶部提到的函数,然后是两个 trap
命令,然后是剩余的代码(install()
函数等)。 trap
会捕获提到的信号,您不需要对此进行任何显式处理。
关于linux - 在 bash 中捕获键盘中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18913235/