Si noti che tale sintassi è ereditata dalla shell Bourne.
Dopo il nome della variabile, è possibile disporre in
dell'elenco di elementi esplicitamente fornito oppure do
di 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 do
in entrambi i casi (anche se non è strettamente necessario nel primo) rende la sintassi più coerente. È anche coerente con i while
/ until
loop dove do
è necessario.
while
cmd1
cmd2
do
cmd3
cmd4
done
Hai bisogno do
di 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 in
o do
come nome di variabile al posto di j
sopra).
Anche se raramente documentate, la maggior parte delle shell simili a Bourne (Bourne, ksh, bash, zsh, non ash
né yash
) supportano anche:
for i in 1 2 3; { echo "$i";}
La shell Bourne ksh
e zsh
(ma non bash
) supporta anche:
for i { echo "$i"; }
Mentre bash
, ksh
e zsh
(ma non la shell Bourne) Supporto:
for i; { echo "$i"; }
Tutti (Bourne, bash
, ksh
, zsh
) Supporto:
for i
{ echo "$i";}
ksh93
, bash
, zsh
Supporto:
for ((i=1;i<=3;i++)) { echo "$i"; }