Boucles FOR et instructions WHILE

Introduction à la programmation Bash

Alex Scriven

Data Scientist

Structure de base d'une boucle FOR

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
Introduction à la programmation Bash

Boucle FOR en Bash

La structure de base en Bash est similaire :

for x in 1 2 3

do echo $x done
1
2
3
Introduction à la programmation Bash

Plages numériques en FOR

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
Introduction à la programmation Bash

Syntaxe FOR à trois expressions

Une autre syntaxe courante pour les boucles FOR est la « syntaxe à trois expressions ».

  • Encadrer trois expressions par des doubles parenthèses
  • La première est l'expression de départ (x=2)
  • La deuxième est la condition d'arrêt (x<=4)
  • La troisième est l'expression d'incrément (ou décrément) (x+=2)

 

 

for ((x=2;x<=4;x+=2))
do 
    echo $x
done
2
4
Introduction à la programmation Bash

Expansions « glob »

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
Introduction à la programmation Bash

Retour sur la coquille dans la coquille

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 :

Structure du répertoire books

Introduction à la programmation Bash

Coquille dans la coquille vers une boucle FOR

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
Introduction à la programmation Bash

Syntaxe de l'instruction WHILE

Semblable à une boucle FOR, sauf qu'une condition est testée à chaque itération.

Les itérations continuent tant qu'elle est vraie !

  • Utilisez le mot while au lieu de for
  • Encadrez la condition par des crochets
    • Utilisez les mêmes indicateurs de comparaison numérique que dans les instructions IF (p. ex. -le)
  • Enchaînez plusieurs conditions ou utilisez des doubles crochets comme pour les « IF » avec && (ET) ou || (OU)
  • Assurez-vous qu'un changement dans le code provoque l'arrêt, sinon boucle infinie !
Introduction à la programmation Bash

Exemple d'instruction WHILE

Un simple exemple :

x=1

while [ $x -le 3 ];
do echo $x ((x+=1)) done
1
2
3
Introduction à la programmation Bash

Attention à la boucle infinie

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

Passons à la pratique !

Introduction à la programmation Bash

Preparing Video For Download...