Shell Scripting Tutorial for Beginners 19 - FOR loop
Sommario:
- Lo standard Bash For Loop
- Passa sopra le stringhe
- Scorri su un intervallo di numeri
- Passa sopra gli elementi dell'array
- Bash in stile C per loop
- Dichiarazioni di break and continue
- Dichiarazione di rottura
- Continua Dichiarazione
- Bash for Loop Esempi
- Rinominare i file con spazi nel nome file
- Modifica dell'estensione del file
- Conclusione
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.doneindica 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 shelldoneindica 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 bashHtc one x: risolve il problema del loop di avvio durante l'installazione di rom personalizzate
Scopri come risolvere il problema del loop di avvio durante l'installazione di ROM personalizzate su HTC One X.
Bash fino a loop
In linguaggi di scripting come Bash, i loop sono utili per automatizzare attività ripetitive. Questo tutorial spiega le basi del ciclo until in Bash. Il ciclo until viene utilizzato per eseguire un determinato set di comandi fintanto che la condizione data restituisce false.
Bash while loop
I loop sono uno dei concetti fondamentali dei linguaggi di programmazione. I loop sono utili se si desidera eseguire ripetutamente serie di comandi. Questo tutorial spiega le basi di loop while in Bash e le istruzioni break e continue per modificare il flusso di un loop.







