GNU/Linux >> Tutoriels Linux >  >> Linux

Bash :Boucle jusqu'à ce que l'état de sortie de la commande soit égal à 0

Restez simple

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

Laissez simplement le shell gérer le statut de sortie implicitement

Le shell peut gérer le statut de sortie (enregistré dans $? ) de deux manières, explicite et implicite.

Explicite :status=$? , ce qui permet un traitement ultérieur.

Implicite :

Pour chaque déclaration, dans votre esprit , ajoutez le mot "réussit" à la commande, puis ajoutez if , until ou while construit autour d'eux, jusqu'à ce que la phrase ait un sens.

until nc réussit ; do ...; done

Le -z l'option arrêtera nc de lire stdin, il n'y a donc pas besoin du < /dev/null rediriger.


Vous pouvez essayer quelque chose comme

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. Les codes de sortie de la ligne de commande Bash démystifiés

  2. La différence entre les opérateurs bash [[ Vs [ Vs ( Vs ((?

  3. Comment Bash évaluera-t-il le code suivant ?

  4. Comment obtenir le statut de sortie d'une boucle dans bash

  5. erreur :la commande 'gcc' a échoué avec l'état de sortie 1 sur CentOS

Commande d'attente bash

Bash pendant la boucle

Bash jusqu'à la boucle

Commande de sortie Bash et codes de sortie

Commande Bash printf

Bash Scripting - Boucle While And Until expliquée avec des exemples