Boucles FOR et instructions WHILE

Introduction au scripting 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 au scripting 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 au scripting Bash

Plages numériques en FOR

Bash propose une plage numérique pratique appelée « brace expansion » :

  • {START..STOP..INCREMENT}
for x in {1..5..2}

do echo $x done
1
3
5
Introduction au scripting Bash

Syntaxe FOR à trois expressions

Une autre écriture courante des boucles FOR est la syntaxe « trois expressions ».

  • Entourez trois expressions de doubles parenthèses
  • La première partie : expression de départ (x=2)
  • La partie centrale : condition d'arrêt (x<=4)
  • La partie finale : incrément (ou décrément) (x+=2)

 

 

for ((x=2;x<=4;x+=2))
do 
    echo $x
done
2
4
Introduction au scripting Bash

Extensions glob

Bash autorise aussi des extensions par motifs dans une boucle for via le symbole *, par exemple pour les fichiers d'un répertoire.

Par exemple, supposons deux fichiers texte dans le dossier /books :

for book in books/*
do  
    echo $book
done
books/book1.txt
books/book2.txt
Introduction au scripting Bash

Retour sur la « coquille dans la coquille »

Vous vous souvenez de la « coquille dans la coquille » avec la notation $() ?

Vous pouvez l'appeler directement dans une boucle for !

Supposons une arborescence de dossiers comme ceci :

Structure du répertoire books

Introduction au scripting Bash

Coquille dans la coquille dans une FOR

Nous pouvons itérer sur le résultat d'un appel à la coquille dans la coquille :

for book in $(ls books/ | grep -i 'air')

do echo $book done
AirportBook.txt
FairMarketBook.txt
Introduction au scripting Bash

Syntaxe de l'instruction WHILE

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

Les itérations continuent jusqu'à ce qu'elle ne soit plus vraie !

  • Utilisez le mot while au lieu de for
  • Placez la condition entre crochets
    • Même indicateurs de comparaison numérique que pour IF (par ex. -le)
  • Conditions multiples chaînables ou doubles crochets comme pour « IF », avec && (ET) ou || (OU)
  • Prévoyez une modification dans le code pour provoquer l'arrêt (sinon boucle infinie)
Introduction au scripting Bash

Exemple d'instruction WHILE

Voici un exemple simple :

x=1

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

Attention à la boucle infinie

Attention à la boucle WHILE infinie si la condition d'arrêt n'est jamais remplie.

x=1
while [ $x -le 3 ]; 
do
    echo $x
    # ne pas incrémenter x. Il n'atteint jamais 3 !
    # ((x+=1)) 
done

Cela imprimera 1 indéfiniment !

Introduction au scripting Bash

Passons à la pratique !

Introduction au scripting Bash

Preparing Video For Download...