GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash:Schleife, bis der Befehlsausgangsstatus gleich 0 ist

Halten Sie es einfach

until nc -z 127.0.0.1 25565
do
    echo ...
    sleep 1
done

Lass die Shell einfach implizit mit dem Exit-Status umgehen

Die Shell kann mit dem Exit-Status umgehen (aufgezeichnet in $? ) auf zwei Arten, explizit und implizit.

Explizit:status=$? , was eine weitere Verarbeitung ermöglicht.

Implizit:

Für jede Aussage, in Gedanken , fügen Sie dem Befehl das Wort „succeeds“ hinzu und fügen Sie dann if hinzu , until oder while Konstrukte um sie herum, bis der Ausdruck Sinn ergibt.

until nc erfolgt ; do ...; done

Die -z Option stoppt nc vom Lesen von stdin, also ist < /dev/null nicht erforderlich umleiten.


Sie könnten so etwas wie

versuchen
while true; do
    nc 127.0.0.1 25565 < /dev/null
    if [ $? -eq 0 ]; then
        break
    fi
    sleep 1
done
echo "The command output changed!"

Linux
  1. Bash-Befehlszeilen-Exit-Codes entmystifiziert

  2. Der Unterschied zwischen den Bash-Operatoren [[ Vs [ Vs ( Vs ((?

  3. Bash Shell Exit Status Tutorial mit praktischen Beispielen

  4. Bash-Exportbefehl

  5. Exit-Code der Variablenzuweisung zur Befehlsersetzung in Bash

Bash-Wartebefehl

Bash-while-Schleife

Bash bis Loop

Bash Exit-Befehl und Exit-Codes

Bash-printf-Befehl

Bash-Skripting – While- und Until-Schleife mit Beispielen erklärt