Introduction à la programmation Bash
Alex Scriven
Data Scientist
Python:
for x in range(3):
print(x)
0
1
2
R:
for (x in seq(3)){
print(x)
}
[1] 1
[1] 2
[1] 3
La structure de base en Bash est similaire :
for x in 1 2 3do echo $x done
1
2
3
Bash offre une façon pratique de créer un intervalle numérique, appelée « brace expansion » :
{START..STOP..INCREMENT}for x in {1..5..2}do echo $x done
1
3
5
Une autre syntaxe courante pour les boucles FOR est la « syntaxe à trois expressions ».
x=2)x<=4)x+=2)
for ((x=2;x<=4;x+=2))
do
echo $x
done
2
4
Bash permet aussi des expansions par motif dans une boucle for avec le symbole *, par exemple pour les fichiers d'un répertoire.
Par exemple, supposons deux documents texte dans le dossier /books :
for book in books/*
do
echo $book
done
books/book1.txt
books/book2.txt
Vous vous rappelez la « coquille dans la coquille » avec la notation $() ?
On peut l'appeler directement dans une boucle for !
Supposons une structure de dossiers comme suit :

On peut itérer sur le résultat d'un appel « coquille dans la coquille » :
for book in $(ls books/ | grep -i 'air')do echo $book done
AirportBook.txt
FairMarketBook.txt
Semblable à une boucle FOR, sauf qu'une condition est testée à chaque itération.
Les itérations continuent tant qu'elle est vraie !
while au lieu de for-le)&& (ET) ou || (OU)Un simple exemple :
x=1while [ $x -le 3 ];do echo $x ((x+=1)) done
1
2
3
Attention à la boucle WHILE infinie si la condition d'arrêt n'est jamais atteinte.
x=1
while [ $x -le 3 ];
do
echo $x
# ne pas incrémenter x. Il n'atteint jamais 3 !
# ((x+=1))
done
Ceci affichera 1 sans fin !
Introduction à la programmation Bash