Ich verwende Folgendes, um zu warten, bis ein Port geöffnet wird.
while ! nc -z 127.0.0.1 8080; do sleep 0.1; done
wie kann das oben genannte geändert werden, um mehrere Ports zu prüfen. Das Skript sollte also nur anhalten, wenn alle Ports belegt sind, z. B. 8080, 8081 und 8082.
Antwort1
Sie müssen nc
für jeden Port separat ausführen:
while ! (nc -z 127.0.0.1 8080 && nc -z 127.0.0.1 8081 && nc -z 127.0.0.1 8082)
do sleep 0.1
done
(zur besseren Lesbarkeit auf mehrere Zeilen aufgeteilt)
Dabei wird eine Shell-Subshell mit einer Liste von Befehlen mit einem logischen „und“ &&
-Operator verwendet; der zweite nc
Befehl wird nur ausgeführt, wenn der erste erfolgreich war usw.; sobald alle nc
Befehle erfolgreich sind, ist der Beendigungsstatus der Subshell wahr, dies wird negiert !
und die while
Schleife wird beendet.