/ / Verlassen der While-Schleife nach dem Einfangen des Signals - bash, While-Schleife, Signale

Verlassen Sie die While-Schleife nach dem Einfangen des Signals - bash, while-loop, signals

Ich schreibe eine Bash-Datei, um ein Signal von einem anderen Programm zu erfassen:

trap "echo Signal" SIGUSR1
while :
do
sleep 1
done
COMMAND 1
COMMAND 2
COMMAND 3
.........

Ich möchte die while-Schleife verlassen, nachdem ich das Signal abgefangen habe, um COMMAND 1,2,3 und so weiter zu starten.

Irgendwelche Vorschläge, bitte? Vielen Dank für Ihre Zeit.

Grüße,

Christian

Antworten:

1 für die Antwort № 1

Setze deine Befehle in eine Funktion und verwende dann die Funktion in deiner Falle:

#!/bin/bash
trap "trp" SIGUSR1
trp() {
COMMAND 1
COMMAND 2
COMMAND 3
.........
}
while :
do
sleep 1
done

0 für die Antwort № 2

Eine Variable verwenden

finished=0
trap "finished=1;echo Signal" SIGUSR1
while ! ((finished))
do
sleep 5
echo sleeping
done
echo done