androide

Bash while loop

Rocco Hunt - Ti volevo dedicare (Official Video) ft. J-AX, Boomdabash

Rocco Hunt - Ti volevo dedicare (Official Video) ft. J-AX, Boomdabash

Sommario:

Anonim

I loop sono uno dei concetti fondamentali dei linguaggi di programmazione. I loop sono utili quando si desidera eseguire una serie di comandi un numero di volte fino a quando non viene soddisfatta una determinata condizione.

In linguaggi di scripting come Bash, i loop sono utili per automatizzare attività ripetitive. Esistono 3 costrutti di loop di base negli script Bash, per loop, while loop e fino a loop.

Questo tutorial spiega le basi di loop while in Bash e le istruzioni break e continue per modificare il flusso di un loop.

Bash mentre Loop

Il ciclo while viene utilizzato per eseguire un determinato set di comandi un numero sconosciuto di volte, purché la condizione specificata sia vera.

Il ciclo Bash while ha la forma seguente:

while do done

La condizione viene valutata prima di eseguire i comandi. Se la condizione restituisce true, i comandi vengono eseguiti. In caso contrario, se la condizione restituisce false, il ciclo verrà terminato e il controllo del programma verrà passato al comando seguente.

Nell'esempio seguente, ad ogni iterazione il ciclo stampa il valore corrente della variabile i e incrementa la variabile di uno.

i=0 while do echo Number: $i ((i++)) done

Il ciclo di ripetizione continua finché i è minore o uguale a due. Produrrà il seguente output:

Number: 0 Number: 1 Number: 2

Infinito mentre Loop

Un ciclo infinito è un ciclo che si ripete all'infinito e non termina mai. Se la condizione viene sempre valutata vera, si ottiene un ciclo infinito.

Nel seguente esempio stiamo usando il comando integrato : che restituisce sempre true per creare un ciclo infinito. È inoltre possibile utilizzare il comando incorporato true o qualsiasi altra istruzione che restituisce sempre true.

while: do echo "Press to exit." sleep 1 done while: do echo "Press to exit." sleep 1 done

Il ciclo while sopra funzionerà indefinitamente. È possibile terminare il ciclo premendo CTRL+C

Ecco un equivalente a riga singola:

while:; do echo 'Press to exit.'; sleep 1; done while:; do echo 'Press to exit.'; sleep 1; done

Leggi un file riga per riga

Uno degli usi più comuni del ciclo while è leggere un file, un flusso di dati o una variabile riga per riga.

Nel seguente esempio il ciclo while leggerà il /etc/passwd riga per riga e stamperà ogni riga.

file=/etc/passwd while read -r line; do echo $line done < "$file"

Invece di controllare il ciclo while con una condizione, stiamo usando il reindirizzamento di input ( < "$file" ) per passare un file alla read che è il comando che controlla il ciclo. Il ciclo while verrà eseguito fino alla lettura dell'ultima riga.

Quando si legge il file riga per riga, utilizzare sempre read con l'opzione -r per evitare che la barra rovesciata funga da carattere di escape.

Per impostazione predefinita, il comando di read taglia i caratteri di spazi bianchi iniziali / finali (spazi e tabulazioni). Utilizzare l'opzione IFS= prima del comando read per impedire questo comportamento

file=/etc/passwd while IFS= read -r line; do echo $line done < "$file"

Dichiarazioni di break and continue

Le istruzioni break e continue possono essere utilizzate per controllare l'esecuzione del ciclo while.

Dichiarazione di rottura

L'istruzione break termina il loop corrente e passa il controllo del programma al comando che segue il loop terminato. Di solito viene utilizzato per terminare il loop quando viene soddisfatta una determinata condizione.

Nel seguente esempio, l'esecuzione del ciclo verrà interrotta quando l'elemento iterato corrente è uguale a 2 .

i=0 while do echo "Number: $i" ((i++)) if]; then break fi done echo 'All Done!'

Number: 0 Number: 1 All Done!

Continua Dichiarazione

L'istruzione continue esce dall'iterazione corrente di un ciclo e passa il controllo del programma alla successiva iterazione del ciclo.

Di seguito, una volta che l'elemento iterato corrente è uguale a 2 l'istruzione continue farà tornare l'esecuzione all'inizio del ciclo e continuerà con l'iterazione successiva.

i=0 while do ((i++)) if]; then continue fi echo "Number: $i" done echo 'All Done!'

Number: 1 Number: 3 Number: 4 Number: 5 All Done!

Conclusione

Ormai dovresti avere una buona conoscenza di come usare il ciclo bash while.

terminale loop bash