GNU/Linux >> Linux Esercitazione >  >> Linux

Bash For Loop

I loop sono uno dei concetti fondamentali dei linguaggi di programmazione. I loop sono utili quando vuoi eseguire una serie di comandi più e più volte fino al raggiungimento di una determinata condizione.

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

Ci sono tre costrutti di ciclo di base nello scripting Bash, for ciclo, while ciclo e until ciclo.

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

Il Bash standard for Ciclo #

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

Il bash for loop assume la forma seguente:

for item in [LIST]
do
  [COMMANDS]
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.

Cicla sulle stringhe #

Nell'esempio seguente, il ciclo scorrerà su ogni elemento nell'elenco di stringhe e sulla variabile element verrà impostato sull'elemento corrente:

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

Il ciclo produrrà il seguente output:

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

Cicla 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 della sequenza assume la forma seguente:

{START..END}

Ecco un esempio di ciclo che scorre 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}

Ecco un esempio che mostra come aumentare di 5:

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

Cicla sugli elementi dell'array #

Puoi anche usare il for ciclo per scorrere un array di elementi.

Nell'esempio seguente, stiamo definendo un array chiamato BOOKS e iterando su 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

Il ciclo Bash for in stile C #

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

for ((INITIALIZATION; TEST; STEP))
do
  [COMMANDS]
done

L'INITIALIZATION parte viene eseguita solo una volta all'inizio del ciclo. Quindi, il TEST parte viene valutata. Se è false, il ciclo viene terminato. Se il TEST è vero, comandi all'interno del corpo di for loop vengono eseguiti e il STEP parte è aggiornata.

Nel codice di esempio seguente, il ciclo inizia inizializzando i = 0 , e prima di ogni iterazione controlla se i ≤ 10 . Se true stampa il valore corrente di i e [incrementa la variabile] i per 1 (i++ ) altrimenti il ​​ciclo termina.

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

Il ciclo eseguirà 1001 iterazioni e produrrà il seguente output:

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

break e continue Dichiarazioni #

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

break Dichiarazione #

La 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 ciclo quando viene soddisfatta una determinata condizione.

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

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

echo 'All Done!'
Element: Hydrogen
Element: Helium
All Done!

continue Dichiarazione #

Il continue esce dall'iterazione corrente di un ciclo e passa il controllo del programma all'iterazione successiva del ciclo.

Nell'esempio seguente, stiamo scorrendo un intervallo di numeri. Quando l'elemento correntemente ripetuto è uguale a "2", il continue istruzione farà tornare l'esecuzione all'inizio del ciclo e per continuare con l'iterazione successiva:

for i in {1..5}; do
  if [[ "$i" == '2' ]]; then
    continue
  fi
  echo "Number: $i"
done
Number: 1
Number: 3
Number: 4
Number: 5

Bash for Esempi di loop #

Rinominare i file con spazi nel nome file #

L'esempio seguente mostra come rinominare tutti i file nella directory corrente con uno spazio nei suoi nomi sostituendo lo spazio per sottolineare:

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

Analizziamo il codice riga per riga:

  • La prima riga crea un for loop e scorre un elenco di tutti i file con uno spazio nel 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 del parametro della shell per sostituire un pattern all'interno di un parametro con una stringa.
  • done indica la fine del segmento del ciclo.

Cambiare l'estensione del file #

L'esempio seguente mostra come usare Bash for loop 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 for scorre 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 dei parametri della shell
  • done indica la fine del segmento del ciclo.

Conclusione #

Il bash for loop viene utilizzato per eseguire un determinato insieme di comandi ripetutamente per un numero fisso di volte.

Se hai domande o feedback, sentiti libero di lasciare un commento.


Linux
  1. Come scrivere un ciclo in Bash

  2. Bash For Loop Guida ed esempi

  3. Parallelizzare un Bash For Loop?

  4. Tieniti aggiornato - Bash For, While, Until Esempi di loop

  5. Ciclo for nidificato

Bash For Loop con esempi pratici

Bash Scripting – For Loop spiegato con esempi

Bash For Loops con esempi

Bash For Loop – La guida più pratica

Il ciclo Bash FOR spiegato e semplificato

Script Bash per Loop spiegato con esempi