Wie funktioniert der Befehl continue in einem Bash-Skript mit eingebetteten Schleifen?

7

Ich schreibe ein Bash-Skript in einer Busybox-Sitzung.

Das Skript muss eine externe ausführbare Datei mehrere Male nacheinander in dämonisierter 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 Befehl continue ausgeführt wird.

Die erste während der Lesezeile oder die nachfolgende, bis sie ausgelöst wird?

Bitte konzentrieren Sie sich nicht auf den eigentlichen Code, den ich als Beispiel zusammengestellt habe, um diese Frage zu erklären. Der eigentliche Code ist viel detaillierter.

user22086
quelle

Antworten:

15

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 continueoder möchten continue 1zur nächsten Iteration von untiloder continue 2zur nächsten Iteration von while.

Jim Paris
quelle