Beachten Sie, dass diese Syntax von der Bourne-Shell geerbt wird.
Nach dem Variablennamen müssen Sie entweder in
die Liste der Elemente explizit angeben lassen oder do
die 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 do
in 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
/ until
Schleifen überein, in denen das do
notwendig ist.
while
cmd1
cmd2
do
cmd3
cmd4
done
Sie müssen do
angeben, 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 do
POSIX (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 in
oder nicht do
als Variablennamen anstelle von j
oben verwenden können).
Obwohl selten dokumentiert, unterstützen die meisten Bourne-ähnlichen Shells (Bourne, ksh, bash, zsh, weder ash
noch yash
) auch:
for i in 1 2 3; { echo "$i";}
Die Bourne-Shell ksh
und zsh
(aber nicht bash
) auch:
for i { echo "$i"; }
Während bash
, ksh
und 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
, zsh
Unterstützung:
for ((i=1;i<=3;i++)) { echo "$i"; }