Beachten Sie, dass diese Syntax von der Bourne-Shell geerbt wird.
Nach dem Variablennamen müssen Sie entweder indie Liste der Elemente explizit angeben lassen oder dodie Positionsparameter durchlaufen.
for i in 1 2 3
do
echo "$i"
done
Oder
set 1 2 3
for i do
echo "$i"
done
Das Haben doin beiden Fällen (auch wenn es in dem ersten nicht unbedingt notwendig ist) sorgt für eine konsistente Syntax. Es stimmt auch mit den while/ untilSchleifen überein, in denen das donotwendig ist.
while
cmd1
cmd2
do
cmd3
cmd4
done
Sie müssen doangeben, wo die Liste der Bedingungsbefehle endet.
Beachten Sie, dass die Bourne-Shell nicht unterstützt for i; do. Diese Syntax war auch erst in der Ausgabe 2016 des Standards for i doPOSIX (war schon immer POSIX; siehe den entsprechenden Fehler in der Austin-Gruppe ).
zsh hat ein paar Kurzformen wie:
for i in 1 2 3; echo $i
for i (1 2 3) echo $i
for ((i=1;i<=3;i++)) echo $i
Oder Unterstützung für mehr als eine Variable:
for i j (1 a 2 b) echo $i $j
(obwohl Sie inoder nicht doals Variablennamen anstelle von joben verwenden können).
Obwohl selten dokumentiert, unterstützen die meisten Bourne-ähnlichen Shells (Bourne, ksh, bash, zsh, weder ashnoch yash) auch:
for i in 1 2 3; { echo "$i";}
Die Bourne-Shell kshund zsh(aber nicht bash) auch:
for i { echo "$i"; }
Während bash, kshund zsh(aber nicht die Bourne - Shell) Unterstützung:
for i; { echo "$i"; }
All (Bourne, bash, ksh, zsh) Unterstützung:
for i
{ echo "$i";}
ksh93, bash, zshUnterstützung:
for ((i=1;i<=3;i++)) { echo "$i"; }