Notez que cette syntaxe est héritée du shell Bourne.
Après le nom de la variable, vous pouvez soit inavoir explicitement la liste des éléments, soit doparcourir les paramètres de position.
for i in 1 2 3
do
echo "$i"
done
Ou
set 1 2 3
for i do
echo "$i"
done
Avoir le dodans les deux cas (même si ce n'est pas strictement nécessaire dans le premier) rend la syntaxe plus cohérente. C'est également compatible avec les while/ untilboucles où le doest nécessaire.
while
cmd1
cmd2
do
cmd3
cmd4
done
Vous avez besoin de dopour savoir où se termine la liste des commandes de condition .
Notez que le shell Bourne ne prend pas en charge for i; do. Cette syntaxe n'était pas non plus POSIX jusqu'à l'édition 2016 de la norme (elle for i doa toujours été POSIX; voir le bogue lié au groupe Austin ).
zsh a quelques formes abrégées comme:
for i in 1 2 3; echo $i
for i (1 2 3) echo $i
for ((i=1;i<=3;i++)) echo $i
Ou prendre en charge plusieurs variables:
for i j (1 a 2 b) echo $i $j
(bien que vous ne puissiez pas utiliser inou docomme nom de variable à la place de jci - dessus).
Même s'ils sont rarement documentés, la plupart des coquilles de type Bourne (Bourne, ksh, bash, zsh, not ashni yash) prennent également en charge:
for i in 1 2 3; { echo "$i";}
Le shell Bourne, kshet zsh(mais pas bash) prend également en charge:
for i { echo "$i"; }
Alors que bash( kshet zshpas le shell Bourne), le support:
for i; { echo "$i"; }
Tous (Bourne, bash, ksh, zsh) soutien:
for i
{ echo "$i";}
ksh93, bash, zshSoutien:
for ((i=1;i<=3;i++)) { echo "$i"; }