Ich schreibe ein Bash-Skript in einer Busybox-Sitzung.
Das Skript muss eine externe ausführbare Datei mehrmals hintereinander in daemonisierter Form initiieren und dann die Ausgabe überwachen.
while read LINE; do
VARIABLEPARAMETER=`echo "$LINE" | sed -e 's/appropriateregex(s)//'`
externalprog --daemonize -acton $VARIABLEPARAMETER -o /tmp/outputfile.txt
until [ "TRIGGERED" = "1" ]; do
WATCHOUTPUT=`tail -n30 /tmp/outputfile.txt`
TRIGGERED=`echo "$WATCHOUTPUT" | grep "keyword(s)"`
if [ -z "$TRIGGERED" ]; then
PROGID=`pgrep externalprog`
kill -2 "$PROGID"
continue
fi
done
done < /tmp/sourcedata.txt
Meine Frage ist, gegen welche der beiden Schleifen der Continue-Befehl ausgeführt wird?
Die anfängliche While-Read-Zeile oder die nachfolgende While-Read-Zeile?
Konzentrieren Sie sich bitte nicht auf den eigentlichen Code, den ich hier als Beispiel zusammengestellt habe, um zu versuchen, diese Frage zu erklären, der eigentliche Code ist viel detaillierter.
Akzeptierte Antwort:
Aus „Hilfe weiter“:
continue: continue [n]
Resume for, while, or until loops.
Resumes the next iteration of the enclosing FOR, WHILE or UNTIL loop.
If N is specified, resumes the Nth enclosing loop.
Exit Status:
The exit status is 0 unless N is not greater than or equal to 1.
Sie möchten also continue
oder continue 1
um zur nächsten Iteration von until
zu gehen , oder continue 2
um zur nächsten Iteration von while
zu gehen .