boucle for dans bash

Fumbani Banda 22 mars 2022
  1. La boucle for dans Bash
  2. Exemples d’utilisation de la boucle for dans Bash
  3. Sortie conditionnelle avec un break dans la boucle for de Bash
  4. Substitution de commande avec boucle for
boucle for dans bash

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
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Article connexe - Bash Loop