10.2. Boucles imbriquées

Une boucle imbriquée est une boucle dans une boucle, une boucle à l'intérieur du corps d'une autre boucle. Ce qui se passe est que le premier tour de la boucle externe déclenche la boucle interne, qui s'exécute jusqu'au bout. Puis le deuxième tour de la boucle externe déclenche la boucle interne une nouvelle fois. Ceci se répète jusqu'à ce que la boucle externe termine. Bien sûr, un break à l'intérieur de la boucle interne ou externe peut interrompre ce processus.

Exemple 10.19. Boucles imbriquées

#!/bin/bash
# nested-loop.sh : Boucles "for" imbriquées.

externe=1          # Initialisation du compteur de la boucle externe.

# Début de la boucle externe.
for a in 1 2 3 4 5
do
  echo "Tour $externe dans la boucle externe."
  echo "------------------------------"
  interne=1        # Initialisation du compteur de la boucle interne.

  # =====================================================================
  # Début de la boucle interne.
  for b in 1 2 3 4 5
  do
    echo "Tour $interne dans la boucle interne."
    let "interne+=1"  # Incrémentation du compteur de la boucle interne.
  done
  # Fin de la boucle interne.
  # =====================================================================

  let "externe+=1"    # Incrémentation du compteur de la boucle externe. 
  echo                # Espace entre chaque bloc en sortie de la boucle externe.
done
# Fin de la boucle externe.

exit 0

Voir l'Exemple 26.10, « Le tri bulle : Bubble Sort » pour une illustration de boucles while imbriquées, et l'Exemple 26.12, « Crible d'Ératosthene » pour voir une boucle while imbriquée dans une boucle until.