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!"