Wenn Sie wollen, dass die while-Schleife nach einem gewissen Zustand zu stoppen, und Ihr foo
Befehl gibt Nicht-Null, wenn diese Bedingung erfüllt ist, dann können Sie die Schleife bekommen wie diese zu brechen:
while foo; do echo 'sleeping...'; sleep 5; done;
Zum Beispiel, wenn der Befehl foo
Dinge in Stapeln löscht, und es gibt 1 zurück, wenn nichts mehr zu löschen ist.
Dies funktioniert gut, wenn Sie ein benutzerdefiniertes Skript haben, das einen Befehl viele Male bis zu einer Bedingung ausführen muss. Sie schreiben das Skript zum Beenden mit 1
, wenn die Bedingung erfüllt ist, und beenden Sie mit 0
, wenn es erneut ausgeführt werden soll.
Zum Beispiel, sagen Sie einen Python-Skript batch_update.py
haben, die 100 Zeilen in einer Datenbank aktualisiert und gibt 0
, wenn es mehr zu aktualisieren und 1
ist, wenn es nicht mehr ist. Der folgende Befehl ermöglicht es Ihnen, Zeilen 100 zu einem Zeitpunkt zu aktualisieren mit 5 Sekunden zwischen den Updates schlafen:
while batch_update.py; do echo 'sleeping...'; sleep 5; done;
ersetzen Zeilenumbrüche durch Semikolons. Das Gleiche funktioniert für for-Schleifen. – Tom
@Tom: das funktioniert nicht immer. nach dem tun, müssen Sie den ersten Befehl haben, nicht ein Semikolon –