Es gibt die bekannte while condition; do ...; done
Schleife, aber gibt es eine do... while
Stilschleife, die mindestens eine Ausführung des Blocks garantiert?
shell
control-flow
Shawn J. Goff
quelle
quelle
Antworten:
Eine sehr vielseitige Version von a
do ... while
hat diese Struktur:Ein Beispiel ist:
Da dies
i
der Fall ist (für den kein Wert festgelegt wurde ), wird die Schleife 20 Mal ausgeführt.UN-Kommentiert die Zeile, die
i
auf 16 gesetzt isti=16
, wird die Schleife viermal ausgeführt.Für
i=16
,i=17
,i=18
undi=19
.Wenn i zum selben Zeitpunkt (dem Start) auf (sagen wir 26) gesetzt ist, werden die Befehle immer noch beim ersten Mal ausgeführt (bis der Befehl zum Unterbrechen der Schleife getestet wird).
Der Test für eine Weile sollte wahr sein (Ausgangsstatus 0).
Der Test sollte für eine Till-Schleife umgekehrt werden, dh: falsch sein (Ausgangsstatus nicht 0).
In einer POSIX-Version müssen mehrere Elemente geändert werden, um zu funktionieren:
quelle
set -e
irgendetwas verwenden , das innerhalb des while-Bedingungsblocks nicht funktioniert, die Ausführung nicht unterbrochen wird: zBset -e; while nonexistentcmd; true; do echo "SHiiiiit"; exit 3; done
-> shit happens. Also, wenn Sie dies verwenden, müssen Sie sehr vorsichtig mit der Fehlerbehandlung sein, dh verketten Sie alle Befehle mit&&
!Es gibt keine do ... while- oder do ... until-Schleife, aber das Gleiche kann wie folgt erreicht werden:
für bis:
quelle