10 Stimmen

Tastaturunterbrechung abfangen

Ich habe ein Bash-Skript, das ein Programm in einer Schleife ausführt und die Ausgabe des Programms liest. Ich möchte, dass das Programm und das Skript beendet werden, wenn ich control-c drücke.

Ich habe dies versucht, aber es scheint das Programm nicht zu beenden.

control_c() {
   exit
}

while true ; do 

    trap control_c SIGINT

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

Kann mir jemand den richtigen Weg zeigen, um das zu erreichen, was ich beschrieben habe? Ich danke Ihnen!

11voto

alnet Punkte 1013

Sie können so vorgehen:

control_c() {
    kill $PID
    exit
}

trap control_c SIGINT

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

4voto

Russell Davis Punkte 7892

Versuchen Sie, das Programm in Ihrem System zu beenden. control_c() Funktion, z.B.,

pkill my_command

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X