Unix / Linux - Controllo del ciclo della shell
In questo capitolo, discuteremo del controllo del ciclo della shell in Unix. Finora hai esaminato la creazione di loop e il lavoro con i loop per svolgere diverse attività. A volte è necessario interrompere un ciclo o saltare le iterazioni del ciclo.
In questo capitolo impareremo a seguire due istruzioni che sono usate per controllare i cicli della shell -
Il break dichiarazione
Il continue dichiarazione
Il ciclo infinito
Tutti i loop hanno una durata limitata e vengono fuori una volta che la condizione è falsa o vera a seconda del loop.
Un ciclo può continuare all'infinito se la condizione richiesta non viene soddisfatta. Un ciclo che viene eseguito per sempre senza terminare viene eseguito per un numero infinito di volte. Per questo motivo, tali loop sono chiamati loop infiniti.
Esempio
Ecco un semplice esempio che utilizza l'estensione while loop per visualizzare i numeri da zero a nove -
#!/bin/sh
a=10
until [ $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
Questo ciclo continua per sempre perché a è sempre greater than o equal to 10 e non è mai inferiore a 10.
La dichiarazione di rottura
Il breakL'istruzione viene utilizzata per terminare l'esecuzione dell'intero ciclo, dopo aver completato l'esecuzione di tutte le righe di codice fino all'istruzione break. Quindi passa al codice che segue la fine del ciclo.
Sintassi
Il seguente break è usata per uscire da un ciclo -
break
Il comando break può essere utilizzato anche per uscire da un ciclo annidato utilizzando questo formato -
break n
Qui n specifica il nth che racchiude il ciclo all'uscita da.
Esempio
Ecco un semplice esempio che mostra che il ciclo termina non appena a diventa 5 -
#!/bin/sh
a=0
while [ $a -lt 10 ]
do
echo $a
if [ $a -eq 5 ]
then
break
fi
a=`expr $a + 1`
done
Dopo l'esecuzione, riceverai il seguente risultato:
0
1
2
3
4
5
Ecco un semplice esempio di ciclo for annidato. Questo script esce da entrambi i cicli sevar1 equals 2 e var2 equals 0 -
#!/bin/sh
for var1 in 1 2 3
do
for var2 in 0 5
do
if [ $var1 -eq 2 -a $var2 -eq 0 ]
then
break 2
else
echo "$var1 $var2"
fi
done
done
Dopo l'esecuzione, riceverai il seguente risultato. Nel ciclo interno, hai un comando di interruzione con l'argomento 2. Ciò indica che se una condizione è soddisfatta dovresti uscire dal ciclo esterno e infine anche dal ciclo interno.
1 0
1 5
L'istruzione continue
Il continue dichiarazione è simile a break comando, tranne per il fatto che fa terminare l'iterazione corrente del ciclo, anziché l'intero ciclo.
Questa istruzione è utile quando si è verificato un errore ma si desidera provare a eseguire l'iterazione successiva del ciclo.
Sintassi
continue
Come con l'istruzione break, è possibile fornire un argomento intero al comando continue per saltare i comandi dai cicli annidati.
continue n
Qui n specifica il nth che racchiude il ciclo da cui continuare.
Esempio
Il ciclo seguente fa uso di continue istruzione che ritorna dall'istruzione continue e inizia l'elaborazione dell'istruzione successiva -
#!/bin/sh
NUMS="1 2 3 4 5 6 7"
for NUM in $NUMS
do
Q=`expr $NUM % 2`
if [ $Q -eq 0 ]
then
echo "Number is an even number!!"
continue
fi
echo "Found odd number"
done
Dopo l'esecuzione, riceverai il seguente risultato:
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number