boucle for dans bash
-
La boucle
for
dans Bash -
Exemples d’utilisation de la boucle
for
dans Bash -
Sortie conditionnelle avec un
break
dans la bouclefor
de Bash -
Substitution de commande avec boucle
for
Ce didacticiel explique l’utilisation de la boucle for
dans les scripts Bash en utilisant la notation de plage et la notation à trois expressions comme dans le langage de programmation C.
La boucle for
dans Bash
La boucle for
est une instruction Bash utilisée pour exécuter des commandes de manière répétée. La boucle for
de Bash utilise deux notations principales. Les deux notations sont présentées ci-dessous.
La première notation utilise la boucle for
avec une plage définie. Dans la syntaxe ci-dessous, l’extrémité de la plage est n
. Cela signifie que la boucle for
exécutera les commandes qu’elle contient n
fois avant de s’arrêter.
for variable in 1 2 3 ... n
do
command1
command2
done
La seconde notation utilise la boucle for
avec une expression à trois comme dans le langage de programmation C. exp1
est l’initialisation, exp2
est la condition et exp3
est l’incrément.
for ((exp1; exp2; exp3))
do
command1
command2
done
Exemples d’utilisation de la boucle for
dans Bash
Les scripts ci-dessous illustrent l’utilisation de la boucle for dans les scripts Bash.
Ce script met la valeur de la variable i
à 1
la première fois, et il imprime line number 1
. Ensuite, il retourne à la boucle for
, met la variable i
à 2
, et imprime line number 2
.
Le script le fait à plusieurs reprises, en changeant la valeur de i
jusqu’à ce qu’il atteigne le dernier chiffre, 5. Une fois qu’il a imprimé line number 5
, la boucle for
se termine automatiquement.
#!/bin/bash
for i in 1 2 3 4 5
do
printf "line number $i"
printf "\n"
done
L’exécution du script ci-dessus imprime la sortie suivante sur la sortie standard.
line number 1
line number 2
line number 3
line number 4
line number 5
Le script ci-dessous utilise les accolades pour définir une plage pour la boucle for
à parcourir. Les nombres à l’intérieur des accolades sont incrémentés séquentiellement.
La première fois, la valeur de i
est mise à 1
. Le script exécute alors les deux commandes printf
à l’intérieur de la boucle for
. La valeur de i
est incrémentée de 1, elle devient 2
, et les commandes printf
à l’intérieur de la boucle for sont exécutées.
La valeur de i
est incrémentée à plusieurs reprises jusqu’à ce qu’elle devienne finalement 5
, et une fois les deux commandes printf
exécutées, la boucle for
se termine automatiquement.
!/bin/bash
for i in {1..5}
do
printf "Hello World $i"
printf "\n"
done
Voici la sortie imprimée après l’exécution du script.
Hello World 1
Hello World 2
Hello World 3
Hello World 4
Hello World 5
Ci-dessous, le script utilise la notation à trois expressions comme dans le langage de programmation C. Dans la première expression, x
est initialisé à 0
. La deuxième expression a le test conditionnel qui vérifie si x
est inférieur ou égal à la valeur de la variable max
.
La valeur de la variable max
a été fixée à 5
. La dernière expression incrémente la valeur de x
de 1
.
La première fois, la valeur de x
est 0
, et la condition renvoie vraie car 0
est inférieur ou égal à 5
. La boucle for
imprime alors number: 0
sur le terminal, et la valeur de x
est incrémentée de 1
. x
devient maintenant 1
.
1
est également testé s’il est inférieur ou égal à 5
, il renvoie vrai et la boucle for imprime number: 1
Ce processus se répète jusqu’à ce que la condition renvoie false et que la boucle for
se termine.
#!/bin/bash
max=5
printf "Print Numbers from 0 to $max\n"
for ((x=0;x<=max;x++)); do
printf "number: $x\n"
done
Vous trouverez ci-dessous la sortie imprimée sur le terminal après l’exécution du script.
Print Numbers from 0 to 5
number: 0
number: 1
number: 2
number: 3
number: 4
number: 5
Sortie conditionnelle avec un break
dans la boucle for
de Bash
Le script ci-dessous montre comment sortir d’une boucle for
avec le mot-clé break
. La boucle for
est configurée pour itérer si la valeur de la variable x
est inférieure ou égale à la valeur de la variable max
. Cependant, il y a une commande test
à l’intérieur de la boucle for
.
La commande test
vérifie si la valeur de la variable x
est égale à 3
; si ce test retourne true, le script rencontre le mot clé break
, et la boucle for
se termine.
#!/bin/bash
max=5
printf "Print Numbers from 0 to $max\n"
printf "Program will exit when we hit 3\n"
for ((x=0;x<=max;x++)); do
printf "number: $x\n"
if [ $x -eq 3 ]
then
break
fi
done
Voici la sortie affichée sur le terminal standard lorsque le script est exécuté. La boucle for
existe lorsque la valeur de x
est égale à 3
car la commande test
à l’intérieur de la boucle for
évalue l’expression arithmétique lorsque la valeur de la variable x
est définie sur 3
, et il renvoie vrai. Ensuite, le script rencontre le mot-clé break
dans l’instruction if
et se termine.
Print Numbers from 0 to 5
Program will exit when we hit 3
number: 0
number: 1
number: 2
number: 3
Substitution de commande avec boucle for
Le script ci-dessous montre l’utilisation de la boucle for
avec substitution de commande. La substitution de commande est une fonctionnalité Bash qui nous permet d’exécuter des commandes Linux et de stocker la sortie de la commande dans une variable Bash. Une fois qu’une commande est exécutée à l’aide de cette fonctionnalité, la sortie standard de la commande remplace la commande.
Dans le script, la commande cat
est exécutée en utilisant la substitution de commande. La sortie de cat file1.txt
remplace la commande, et la boucle for
parcourt la sortie de la commande et l’imprime sur la sortie standard à l’aide de la commande printf
.
#!/bin/bash
printf "Program prints the lines of a file\n\n"
for line in $(cat file1.txt)
do
printf "$line"
printf "\n"
done
Le script produit la sortie suivante lorsqu’il est exécuté. Le fichier file1.txt
contient une liste de trois langues qui sont imprimées sur le terminal standard.
Program prints the lines of a file
French
English
Spanish