Si noti che tale sintassi è ereditata dalla shell Bourne.
Dopo il nome della variabile, è possibile disporre indell'elenco di elementi esplicitamente fornito oppure dodi passare in rassegna i parametri posizionali.
for i in 1 2 3
do
echo "$i"
done
O
set 1 2 3
for i do
echo "$i"
done
Avere doin entrambi i casi (anche se non è strettamente necessario nel primo) rende la sintassi più coerente. È anche coerente con i while/ untilloop dove doè necessario.
while
cmd1
cmd2
do
cmd3
cmd4
done
Hai bisogno dodi dire dove finisce l'elenco dei comandi di condizione .
Si noti che la shell Bourne non supportava for i; do. Anche quella sintassi non era POSIX fino all'edizione 2016 dello standard ( for i doè sempre stata POSIX; vedere il relativo bug del gruppo Austin ).
zsh ha alcune forme abbreviate come:
for i in 1 2 3; echo $i
for i (1 2 3) echo $i
for ((i=1;i<=3;i++)) echo $i
O supporto per più di una variabile:
for i j (1 a 2 b) echo $i $j
(sebbene non sia possibile utilizzare ino docome nome di variabile al posto di jsopra).
Anche se raramente documentate, la maggior parte delle shell simili a Bourne (Bourne, ksh, bash, zsh, non ashné yash) supportano anche:
for i in 1 2 3; { echo "$i";}
La shell Bourne kshe zsh(ma non bash) supporta anche:
for i { echo "$i"; }
Mentre bash, kshe zsh(ma non la shell Bourne) Supporto:
for i; { echo "$i"; }
Tutti (Bourne, bash, ksh, zsh) Supporto:
for i
{ echo "$i";}
ksh93, bash, zshSupporto:
for ((i=1;i<=3;i++)) { echo "$i"; }