捕捉键盘中断

时间:2011-04-27 20:34:37

标签: bash scripting

我有一个bash脚本,它在循环中执行程序并从程序中读取输出。我希望当我点击control-c时,它会终止程序和脚本。

我试过这个但似乎没有终止程序。

control_c() {
   exit
}

while true ; do 

    trap control_c SIGINT

    my_command | while read line ; do
       echo $line 
       ...
    done
done

有人能告诉我完成我所描述的正确方法吗?谢谢!

2 个答案:

答案 0 :(得分:6)

您可以这样做:

control_c() {
    kill $PID
    exit
}

trap control_c SIGINT

while true ; do 
   my_command | while read line ; do
   PID=$!
   echo $line 
   ...
done

答案 1 :(得分:3)

尝试在control_c()功能中删除程序,例如,

pkill my_command