Unix / Linux - Tipi di cicli di shell
In questo capitolo, discuteremo dei cicli di shell in Unix. Un ciclo è un potente strumento di programmazione che consente di eseguire ripetutamente una serie di comandi. In questo capitolo esamineremo i seguenti tipi di loop disponibili per i programmatori di shell:
Utilizzerai loop diversi in base alla situazione. Ad esempio, il filewhileloop esegue i comandi dati finché la condizione data rimane vera; iluntil ciclo viene eseguito fino a quando una data condizione diventa vera.
Una volta acquisita una buona pratica di programmazione, acquisirai esperienza e, quindi, inizierai a utilizzare il ciclo appropriato in base alla situazione. Qui,while e for i loop sono disponibili nella maggior parte degli altri linguaggi di programmazione come C, C++ e PERL, eccetera.
Annidamento di loop
Tutti i loop supportano il concetto di annidamento, il che significa che puoi mettere un loop all'interno di un altro simile o diversi loop. Questo annidamento può arrivare fino a un numero illimitato di volte in base alle tue esigenze.
Ecco un esempio di nidificazione whileciclo continuo. Gli altri loop possono essere annidati in base ai requisiti di programmazione in modo simile:
Annidamento in loop
È possibile utilizzare un ciclo while come parte del corpo di un altro ciclo while.
Sintassi
while command1 ; # this is loop1, the outer loop
do
Statement(s) to be executed if command1 is true
while command2 ; # this is loop2, the inner loop
do
Statement(s) to be executed if command2 is true
done
Statement(s) to be executed if command1 is true
done
Esempio
Ecco un semplice esempio di nidificazione dei loop. Aggiungiamo un altro ciclo di conto alla rovescia all'interno del ciclo che hai usato per contare fino a nove -
#!/bin/sh
a=0
while [ "$a" -lt 10 ] # this is loop1
do
b="$a"
while [ "$b" -ge 0 ] # this is loop2
do
echo -n "$b "
b=`expr $b - 1`
done
echo
a=`expr $a + 1`
done
Questo produrrà il seguente risultato. È importante notare comeecho -nfunziona qui. Qui-n consente a echo di evitare di stampare un nuovo carattere di riga.
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0