10.2. Cicli annidati

Un ciclo annidato è un ciclo in un ciclo, vale a dire un ciclo posto all'interno del corpo di un altro (chiamato ciclo esterno). Al suo primo passo, il ciclo esterno mette in esecuzione quello interno che esegue il proprio blocco di codice fino alla conclusione. Quindi, al secondo passo, il ciclo esterno rimette in esecuzione quello interno. Questo si ripete finché il ciclo esterno non termina. Naturalmente, un break contenuto nel ciclo interno o in quello esterno, può interrompere l'intero processo.

Esempio 10-19. Cicli annidati

#!/bin/bash
# nested-loop.sh: Cicli "for" annidati.

esterno=1             # Imposta il contatore del ciclo esterno.

# Inizio del ciclo esterno.
for a in 1 2 3 4 5
do
  echo "Passo $esterno del ciclo esterno."
  echo "---------------------"
  interno=1           # Imposta il contatore del ciclo interno.

  # ==============================================================
  # Inizio del ciclo interno.
  for b in 1 2 3 4 5
  do
    echo "Passo $interno del ciclo interno."
    let "interno+=1"  # Incrementa il contatore del ciclo interno.
  done
  # Fine del ciclo interno.
  # ==============================================================

  let "esterno+=1"    #  Incrementa il contatore del ciclo esterno.
  echo                #  Spaziatura tra gli output dei successivi
                      #+ passi del ciclo esterno.
done
# Fine del ciclo esterno.

exit 0

Vedi Esempio 26-11 per un'illustrazione di cicli while annidati e Esempio 26-13 per un ciclo while annidato in un ciclo until.