Boucles en script Bash

ShellShellBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire (lab), vous apprendrez à utiliser les boucles dans les scripts Bash. Les boucles sont des outils puissants qui vous permettent de répéter un ensemble d'instructions plusieurs fois, rendant vos scripts plus efficaces et flexibles. Nous aborderons trois types de boucles : for, while et until. De plus, vous explorerez les instructions break et continue, qui permettent de contrôler l'exécution des boucles. Ce laboratoire est conçu pour les débutants et vous guidera étape par étape à travers chaque concept.

Configuration de l'environnement

Commençons par configurer notre environnement de travail. Nous allons créer un nouveau répertoire pour stocker toutes nos expériences sur les boucles.

Ouvrez un terminal dans le WebIDE. Vous devriez être par défaut dans le répertoire /home/labex/project. Si vous n'êtes pas sûr, vous pouvez toujours y accéder en utilisant cette commande :

cd /home/labex/project

Maintenant, créons un nouveau répertoire pour nos expériences sur les boucles :

mkdir bash_loops
cd bash_loops

Cela crée un nouveau répertoire appelé bash_loops et y accède. Nous utiliserons ce répertoire pour toutes nos expériences sur les boucles.

Pourquoi faisons-nous cela? Organiser vos scripts dans des répertoires est une bonne pratique. Cela garde votre travail bien rangé et facilite la recherche et la gestion de vos fichiers.

La boucle for

La boucle for est utilisée pour itérer sur une liste de valeurs. C'est comme dire : "Pour chaque élément de cette liste, faites quelque chose." Créons un script qui montre comment utiliser une boucle for.

Créez un nouveau fichier appelé for_loop.sh dans le répertoire bash_loops :

touch for_loop.sh

Maintenant, ouvrez le fichier for_loop.sh dans le WebIDE et ajoutez le contenu suivant :

#!/bin/bash

## Boucle à travers un tableau de noms
echo "Boucle à travers un tableau :"
NAMES=("Alice" "Bob" "Charlie" "David")
for name in "${NAMES[@]}"; do
  echo "Hello, $name!"
done

echo ## Affiche une ligne vide pour la lisibilité

## Boucle à travers une plage de nombres
echo "Boucle à travers une plage de nombres :"
for i in {1..5}; do
  echo "Number: $i"
done

Analysons ce que fait ce script :

  1. La première boucle parcourt un tableau de noms. Pour chaque nom dans le tableau, elle affiche un message de salutation.
  2. La deuxième boucle utilise une plage {1..5} pour compter de 1 à 5.

La syntaxe "${NAMES[@]}" peut sembler étrange. Le @ signifie "tous les éléments du tableau", et les guillemets et les accolades garantissent que chaque élément est traité comme un élément distinct, même s'il contient des espaces.

Enregistrez le fichier et rendez-le exécutable avec cette commande :

chmod +x for_loop.sh

La commande chmod +x rend le fichier exécutable, ce qui signifie que vous pouvez le lancer comme un programme.

Maintenant, exécutez le script :

./for_loop.sh

Vous devriez voir une sortie comme celle-ci :

Boucle à travers un tableau :
Hello, Alice!
Hello, Bob!
Hello, Charlie!
Hello, David!

Boucle à travers une plage de nombres :
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5

Cela montre comment les boucles for peuvent itérer à la fois sur des tableaux et sur des plages de nombres.

La boucle while

La boucle while exécute un bloc de code tant qu'une condition spécifiée est vraie. C'est comme dire : "Tant que cette condition est vraie, continuez à faire cela."

Créez un nouveau fichier appelé while_loop.sh :

touch while_loop.sh

Ouvrez le fichier while_loop.sh dans le WebIDE et ajoutez le contenu suivant :

#!/bin/bash

## Simple compte à rebours en utilisant une boucle while
count=5
echo "Compte à rebours :"
while [ $count -gt 0 ]; do
  echo $count
  count=$((count - 1))
  sleep 1 ## Attendre 1 seconde
done
echo "Décollage!"

Analysons ce script :

  1. Nous commençons par count=5 pour définir notre valeur initiale de compte à rebours.
  2. La condition [ $count -gt 0 ] signifie "tant que count est supérieur à 0".
  3. À l'intérieur de la boucle, nous affichons le compte actuel, le diminuons de 1 et attendons une seconde.
  4. Cela continue jusqu'à ce que count atteigne 0, moment auquel la boucle se termine.

La commande sleep 1 met le script en pause pendant 1 seconde, créant un effet de compte à rebours en temps réel.

Enregistrez le fichier et rendez-le exécutable :

chmod +x while_loop.sh

Maintenant, exécutez le script :

./while_loop.sh

Vous verrez un compte à rebours de 5 à 1, avec une pause d'une seconde entre chaque nombre :

Compte à rebours :
5
4
3
2
1
Décollage!

Cela montre comment une boucle while peut répéter une action jusqu'à ce qu'une condition ne soit plus vraie.

La boucle until

La boucle until est similaire à la boucle while, mais avec une différence importante : elle continue d'exécuter jusqu'à ce qu'une condition spécifiée devienne vraie. C'est comme dire : "Continuez à faire cela jusqu'à ce que cette condition soit vraie."

Créez un nouveau fichier appelé until_loop.sh :

touch until_loop.sh

Ouvrez le fichier until_loop.sh dans le WebIDE et ajoutez le contenu suivant :

#!/bin/bash

## Compter jusqu'à 5 en utilisant une boucle until
count=1
echo "Compter jusqu'à 5 :"
until [ $count -gt 5 ]; do
  echo $count
  count=$((count + 1))
  sleep 1 ## Attendre 1 seconde
done

Analysons ce script :

  1. Nous commençons avec count=1 comme valeur initiale.
  2. La condition [ $count -gt 5 ] signifie "jusqu'à ce que count soit supérieur à 5".
  3. À l'intérieur de la boucle, nous affichons le compte actuel, l'augmentons de 1 et attendons une seconde.
  4. Cela continue jusqu'à ce que count devienne supérieur à 5, moment auquel la boucle se termine.

Enregistrez le fichier et rendez-le exécutable :

chmod +x until_loop.sh

Maintenant, exécutez le script :

./until_loop.sh

Vous verrez les nombres de 1 à 5 affichés, avec une pause d'une seconde entre chaque :

Compter jusqu'à 5 :
1
2
3
4
5

Cela montre comment une boucle until peut répéter une action jusqu'à ce qu'une condition devienne vraie.

Utilisation des instructions break et continue

Les instructions break et continue sont utilisées pour contrôler le flux des boucles. break sort d'une boucle prématurément, tandis que continue saute le reste de l'itération actuelle et passe à la suivante.

Créez un nouveau fichier appelé break_continue.sh :

touch break_continue.sh

Ouvrez le fichier break_continue.sh dans le WebIDE et ajoutez le contenu suivant :

#!/bin/bash

## Utilisation de break pour sortir d'une boucle prématurément
echo "Démonstration de break :"
for i in {1..10}; do
  if [ $i -eq 6 ]; then
    echo "Sortie de la boucle à $i"
    break
  fi
  echo $i
done

echo ## Affiche une ligne vide pour la lisibilité

## Utilisation de continue pour sauter des itérations
echo "Démonstration de continue (affichage des nombres impairs) :"
for i in {1..10}; do
  if [ $((i % 2)) -eq 0 ]; then
    continue
  fi
  echo $i
done

Analysons ce script :

  1. Dans la première boucle, nous utilisons break pour sortir de la boucle lorsque i est égal à 6.
  2. Dans la deuxième boucle, nous utilisons continue pour sauter les nombres pairs. La condition $((i % 2)) -eq 0 vérifie si un nombre est pair (divisible par 2 sans reste).

L'opérateur % calcule le reste de la division. Ainsi, i % 2 sera égal à 0 pour les nombres pairs et à 1 pour les nombres impairs.

Enregistrez le fichier et rendez-le exécutable :

chmod +x break_continue.sh

Maintenant, exécutez le script :

./break_continue.sh

Vous devriez voir une sortie comme celle-ci :

Démonstration de break :
1
2
3
4
5
Sortie de la boucle à 6

Démonstration de continue (affichage des nombres impairs) :
1
3
5
7
9

Cela montre comment break peut sortir d'une boucle prématurément et comment continue peut sauter certaines itérations en fonction d'une condition.

Résumé

Dans ce laboratoire, vous avez appris à connaître trois types de boucles en script Bash :

  1. Les boucles for, qui itèrent sur une liste d'éléments ou une plage de nombres.
  2. Les boucles while, qui continuent tant qu'une condition est vraie.
  3. Les boucles until, qui continuent jusqu'à ce qu'une condition devienne vraie.

Vous avez également appris à utiliser les instructions break et continue, qui vous donnent plus de contrôle sur vos boucles.

Ces structures de boucle sont fondamentales pour de nombreux scripts et vous permettront d'automatiser efficacement les tâches répétitives. Entraînez-vous à utiliser ces boucles dans vos propres scripts pour mieux comprendre leur comportement et leurs cas d'utilisation.