For

De bricosoft
Aller à la navigation Aller à la recherche

for est une structure de controle fournie par le shell permettant de créer des boucles.

Exemples

for i in 1 2 3
do echo $i
done

En une ligne :

$ for i in 1 2 3;do echo $i;done
1
2
3
$ for i in `ls /dev`; do echo $i;done
adsp
audio
block
bus
cdrom
cdrw
char
console
core
...

attention à ne pas saisir :

$ for in in ...

seconde forme

Il existe une seconde forme :

$ for (( i = 1; i <= 5; i++ )); do echo $i;done
1
2
3
4
5

séquences dans une boucle for

Avec des chiffres :

for i in {1..3}; do echo $i; done
1
2
3

Avec des lettres :

$ for i in {a..d}; do echo $i; done
a
b
c
d

Le compte est bon... pas mieux.

Bash gère aussi l'incrément(ici 2) :

$ for i in {0..6..2}
0
2
4
6

Une alternative est d'utiliser seq :

$ for i in $(seq 0 2 6)
0
2
4
6

boucle for avec des noms de fichiers contenants des espaces

vous avez des fichiers avec des espaces dans le nom :

$ls
la pomme.jpg  le citron.jpg

malheureusement la boucle for prends les espaces comme séparateur :

$ for i in `ls *`;do echo $i;done
la
pomme.jpg
le
citron.jpg

Une alternative est de se placer dans le dossier et d'utiliser * aulieu de ls :

$ for i in *;do echo $i;done
la pomme.jpg
le citron.jpg

Une autre alternative est d'utiliser une boucle while avec read :

ls|while read i;do echo $i;done
la pomme.jpg
le citron.jpg

boucle infinie

Une boucle infinie se lance avec :

$ for (( ; ; ))

Liens

{{#switch:|subgroup|child=|none=|#default=

}}