androide

Bash per loop

Shell Scripting Tutorial for Beginners 19 - FOR loop

Shell Scripting Tutorial for Beginners 19 - FOR loop

Sommario:

Anonim

I loop sono uno dei concetti fondamentali dei linguaggi di programmazione. I loop sono utili quando si desidera eseguire ripetutamente una serie di comandi fino al raggiungimento di una determinata condizione.

In linguaggi di scripting come Bash, i loop sono utili per automatizzare attività ripetitive.

Esistono tre costrutti di loop di base negli script Bash, per loop, while loop e fino a loop.

In questo tutorial, tratteremo le basi di per i loop in Bash. Ti mostreremo anche come utilizzare le istruzioni break e continue per modificare il flusso di un ciclo.

Lo standard Bash For Loop

Il ciclo for scorre un elenco di elementi ed esegue il set di comandi specificato.

Il ciclo di Bash for ha la forma seguente:

for item in do done

L'elenco può essere una serie di stringhe separate da spazi, un intervallo di numeri, l'output di un comando, un array e così via.

Passa sopra le stringhe

Nell'esempio seguente il ciclo ripeterà ogni elemento nell'elenco di stringhe e l' element variabile verrà impostato sull'elemento corrente.

for element in Hydrogen Helium Lithium Beryllium do echo "Element: $element" done

Il loop produrrà il seguente output:

Element: Hydrogen Element: Helium Element: Lithium Element: Beryllium

Scorri su un intervallo di numeri

È possibile utilizzare l'espressione della sequenza per specificare un intervallo di numeri o caratteri definendo un punto iniziale e finale dell'intervallo. L'espressione sequenza assume la forma seguente:

{START..END}

Nell'esempio seguente il ciclo ripeterà tutti i numeri da 0 a 3.

for i in {0..3} do echo "Number: $i" done

Number: 0 Number: 1 Number: 2 Number: 3

A partire da Bash 4, è anche possibile specificare un incremento quando si utilizzano gli intervalli. L'espressione assume la forma seguente:

{START..END..INCREMENT}

for i in {0..20..5} do echo "Number: $i" done

Number: 0 Number: 5 Number: 10 Number: 15 Number: 20

Passa sopra gli elementi dell'array

Puoi anche usare il ciclo for per scorrere su una matrice di elementi:

Nell'esempio seguente, stiamo definendo un array BOOKS e ripetendo ogni elemento dell'array.

BOOKS=('In Search of Lost Time' 'Don Quixote' 'Ulysses' 'The Great Gatsby') for book in "${BOOKS}"; do echo "Book: $book" done

Book: In Search of Lost Time Book: Don Quixote Book: Ulysses Book: The Great Gatsby

Bash in stile C per loop

La sintassi dello stile C per loop sta assumendo la forma seguente:

for ((INITIALIZATION; TEST; STEP)) do done

La parte INITIALIZATION viene eseguita una sola volta all'avvio del loop. Quindi, viene valutata la parte TEST . Se è falso, il ciclo for è terminato. Se il TEST è vero, i comandi all'interno del corpo del ciclo for vengono eseguiti e la parte STEP viene aggiornata.

Nel codice seguente, il ciclo inizia inizializzando i = 0 , quindi prima di ogni iterazione verifica se i ≤ 10 . Se vero, stampa il valore corrente di i di 1 ( i++ ), altrimenti il ​​ciclo termina.

for ((i = 0; i <= 1000; i++)); do echo "Counter: $i" done

Il ciclo ripeterà 1001 volte e produrrà il seguente output:

Counter: 0 Counter: 1 Counter: 2… Counter: 998 Counter: 999 Counter: 1000

Dichiarazioni di break and continue

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

Dichiarazione di rottura

L'istruzione break termina il ciclo corrente e passa il controllo del programma all'istruzione che segue l'istruzione terminata. Di solito viene utilizzato per terminare il loop quando viene soddisfatta una determinata condizione.

Nel seguente esempio, stiamo usando l'istruzione if per terminare l'esecuzione del ciclo una volta che l'elemento iterato corrente è uguale a "Litio".

for element in Hydrogen Helium Lithium Beryllium; do if]; then break fi echo "Element: $element" done echo 'All Done!'

Element: Hydrogen Element: Helium 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.

Nel seguente esempio, stiamo iterando attraverso un intervallo di numeri e quando l'elemento iterato corrente è uguale a '2', l'istruzione continue farà tornare l'esecuzione all'inizio del ciclo e continuerà con l'iterazione successiva.

for i in {1..5}; do if]; then continue fi echo "Number: $i" done

Number: 1 Number: 3 Number: 4 Number: 5

Bash for Loop Esempi

Rinominare i file con spazi nel nome file

L'esempio seguente mostra come utilizzare il ciclo Bash for per rinominare tutti i file nella directory corrente con uno spazio nei nomi sostituendo lo spazio per il carattere di sottolineatura.

for file in *\ *; do mv "$file" "${file// /_}" done

Analizziamo il codice riga per riga:

  • La prima riga crea un ciclo for e scorre un elenco di tutti i file con uno spazio nel suo nome. L'espressione *\ * crea l'elenco. La seconda riga si applica a ciascun elemento dell'elenco e sposta il file in uno nuovo sostituendo lo spazio con un trattino basso ( _ ). La parte ${file// /_} sta usando l'espansione dei parametri della shell per sostituire un modello all'interno di un parametro con una stringa. done indica la fine del segmento di loop.

Modifica dell'estensione del file

L'esempio seguente mostra come utilizzare il ciclo Bash for per rinominare tutti i file che terminano con.jpeg nella directory corrente sostituendo l'estensione del file da.jpeg a.jpg.

for file in *.jpeg; do mv -- "$file" "${file%.jpeg}.jpg" done

Analizziamo il codice riga per riga:

  • La prima riga crea un ciclo for e scorre un elenco di tutti i file che terminano con ".jpeg". La seconda riga si applica a ciascun elemento dell'elenco e sposta il file in uno nuovo sostituendo ".jpeg" con ".jpg". ${file%.jpeg} per rimuovere la parte '.jpeg' dal nome del file usando l'espansione del parametro shell done indica la fine del segmento del ciclo.

Conclusione

Ormai dovresti avere una buona conoscenza di come usare bash per loop per scorrere gli elenchi.

terminale loop bash