Wie verlasse ich eine Bash-Schleife per Tastatureingabe?

Wie verlasse ich eine Bash-Schleife per Tastatureingabe?

Ich habe ein bash loppals

#!/bin/bash
for (( c=0; c<=1000000; c++ ))
do  
SOME STUFF HERE
done

Ich unterbreche die lange Schleife durch eine Tastatureingabe wie, Ctrl+Caber Ctrl+Cdas beendet einfach das Skript. Ich suche nach einer Alternative, um den aktuellen Zyklus fortzusetzen und die Schleife nach Beendigung der Ausführung STUFFim aktuellen Zyklus zu unterbrechen.

Antwort1

Eine Möglichkeit besteht darin, trapdas Strg-C-Signal zu verwenden und breakaus dem auszusteigen loop, wie in:

#!/bin/bash
trap break INT
for (( c=0; c<=1000000; c++ ))
do  
SOME STUFF HERE
done
echo "I have broken out of the interminably long for loop"
trap - INT
sleep 1
echo "END."

Weitere Einzelheiten zur Funktionsweise finden Sie hier:

trap break INT

und auch

trap - INT

Wir verwenden „break“, um Trap mitzuteilen, dass wir break ausführen möchten, um die Schleife zu unterbrechen, wenn ein INT(Interrupt- SIGINT)Signal generiert wird (was beim Drücken von Strg+C passiert).

Anstelle von „break“ könnten wir beliebige Shell-Befehle in Anführungszeichen setzen, die ausgeführt werden, wenn das angegebene Signal (in unserem Fall INT) generiert wird.

Zuletzt führen wir Trap erneut aus, um -den „INT“-Handler auf die Standardaktion zurückzusetzen.

Hier sind einige weitere Ressourcen zum Weiterlesen und Beispiele:

verwandte Informationen