Boucles For, While et Until


  • FrançaisFrançais


  • Les boucles sont une fonctionnalité puissante dans n’importe quel langage de programmation. Si vous ne le savez pas déjà, les boucles sont un moyen de répéter le code en fonction de certains critères.

    Par exemple, imaginez que vous devez imprimer les nombres de 1 à 10. Vous pouvez écrire la commande echo dix fois mais c’est très primitif. Vous utilisez une boucle et en 3-4 lignes de code, cela peut être fait.

    C’est le plus simple des exemples auxquels je pouvais penser. Je vais partager des exemples réels et utiles pendant que je discute des boucles bash avec vous.

    Il existe trois types de boucles dans Bash :

    Je vais montrer les trois types de bouclage dans le tutoriel. Commençons par le plus courant.

    Pour la boucle dans bash

    Voici la syntaxe de ‘for loop’ dans bash :

    for arg in LIST; do
     commands
    done

    La LISTE ici peut être un tableau ou une liste d’éléments. Les extensions d’accolades sont également populaires pour les boucles.

    Prenez le scénario le plus simple que j’ai mentionné au début. Imprimons les nombres de 1 à 10 en utilisant la boucle for :

    #!/bin/bash
    
    for num in {1..10}; do
    	echo $num
    done

    Si vous l’exécutez, vous devriez voir une sortie comme celle-ci :

    abhi[email protected]:~/bash_scripts$ ./for-loop.sh
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    

    Vous auriez également pu utiliser for num in 1 2 3 4 5 6 7 8 9 10; do mais l’utilisation de l’expansion des accolades rend le code plus court et plus intelligent.

    {..} est utilisé pour développer un motif. Tu utilises {d..h} et cela équivaut à d e f g h . Vous trouverez plus d’informations sur l’expansion des accolades dans cet article.

    Utilisation de l’expansion des accolades dans Bash Shell

    L’expansion des accolades dans le shell bash est une fonctionnalité moins connue mais impressionnante. Apprenez à les utiliser comme un utilisateur Pro Linux avec des exemples pratiques.

    💡

    Si vous êtes familier avec la programmation C, vous aimerez peut-être utiliser les boucles for de style C dans bash :

    pour ((i = 0 ; i < 10 ; i++)); faire
    écho $i
    fait

    Voyons un autre exemple qui affiche tout le contenu d’un tableau en bash :

    #!/bin/bash
    
    distros=(Ubuntu Fedora Debian Alpine)
    
    for i in "${distros[@]}"; do
    	echo $i
    done

    Si vous exécutez le script, il affichera toutes les distributions définies dans le tableau :

    Ubuntu
    Fedora
    Debian
    Alpine

    Boucle While dans bash

    La boucle while teste une condition, puis continue de boucler tant que la condition est vraie.

    while [ condition ]; do
      commands
    done

    Si vous prenez l’exemple précédent, il peut être réécrit en utilisant la boucle while comme ceci :

    #!/bin/bash
    
    num=1
    while [ $num -le 10 ]; do
    	echo $num
    	num=$(($num+1))
    done

    Comme vous pouvez le voir, vous deviez définir la variable num à 1 d’abord, puis dans le corps de la boucle, vous augmentez la valeur de num par 1. La boucle while vérifie la condition et l’exécute tant que num est inférieur ou égal à 10.

    Ainsi, exécuter le script maintenant affichera le résultat exact que vous avez vu précédemment avec la boucle for.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    

    Voyons un autre exemple. Voici un script bash qui prend un nombre comme argument et affiche sa table.

    #!/bin/bash
    
    echo "Table for $1 is:"
    index=1
    while [ $index -le 10 ]; do
    	echo $(($1*$index))
    	index=$(($index+1))
    done

    Si vous êtes confus quant à l’utilisation de $1, il représente le premier argument passé au script. Consultez le chapitre 3 de cette série pour plus de détails.

    Si vous exécutez le script, il devrait afficher ce résultat :

    [email protected]:~/bash_scripts$ ./table.sh 2
    Table for 2 is:
    2
    4
    6
    8
    10
    12
    14
    16
    18
    20
    

    Jusqu’à la boucle dans bash

    C’est le format de boucle le moins utilisé. Elle se comporte de la même manière que la boucle while. La différence ici est que la boucle s’exécute jusqu’à ce que la condition qu’elle vérifie soit fausse. Je vais l’expliquer un peu. Voyons d’abord sa syntaxe.

    until [ condition ]; do
      commands
    done

    Maintenant, si je dois utiliser le même exemple d’impression de nombres de 1 à 10 en utilisant jusqu’à la boucle, cela ressemblerait à ceci :

    #!/bin/bash
    
    num=1
    until [ $num -gt 10 ]; do
    	echo $num
    	num=$(($num+1))
    done

    La différence est dans la condition; le reste reste le même.

    • La boucle while s’est exécutée pendant que la variable num était inférieur ou égal à 10.
    • La boucle until s’exécute jusqu’à ce que la variable num devient supérieur à 10.

    Les deux sont des façons différentes de faire la même chose. While est plus populaire car vous trouverez une boucle while équivalente dans la plupart des langages de programmation.

    🏋️ Temps d’exercice

    C’était amusant. Il est temps de faire un peu d’exercice maintenant.

    Exercice 1: écrivez un script qui prend un nombre comme argument et imprime sa table. Votre script doit également afficher un message si le script est exécuté sans argument.

    Production attendue:

    $: ./table.sh
    You forgot to enter a number
    
    $: ./table.sh 3
    3
    6
    9
    12
    15
    18
    21
    24
    27
    30

    Exercice 2: Écrivez un script qui liste tous les fichiers du répertoire /var

    Indice: Utilisez la boucle for avec /var/* comme ‘liste’.

    La série Bash Basics touche à sa fin. En tant que dernier chapitre de la série, vous apprendrez à utiliser les fonctions dans les scripts bash la semaine prochaine. Restez à l’écoute.

    Source

    La Rédaction

    L'équipe rédactionnnelle du site

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code