Bash Scripting – Ciclo For

Bash Scripting – Ciclo For

Poiché BASH è un linguaggio da riga di comando, otteniamo un'esperienza piuttosto ricca di funzionalità per sfruttare le capacità di programmazione per eseguire attività nel terminale. Possiamo utilizzare cicli e istruzioni condizionali negli script BASH per eseguire alcuni problemi ripetitivi e complicati in modo semplice a livello di programmazione. In questo articolo ci concentreremo su per ciclo negli script BASH.

A seconda del caso d'uso e del problema che si sta tentando di automatizzare, esistono un paio di modi per utilizzare i loop.

  • Ciclo For semplice
  • Ciclo for basato su intervallo
  • Iterazione dell'array per i loop
  • Stile C per loop
  • Ciclo for infinito

Ciclo For semplice

Per eseguire un ciclo for possiamo scrivere la seguente sintassi:

#!/bin/bash  for n in a b c; do  echo $n done 
  • Nella prima iterazione, n> assume il valore a e lo script stampa a.
  • Nella seconda iterazione, n> prende il valore b e lo script stampa b.
  • Nella terza iterazione, n> assume il valore c e lo script stampa c.

501

Il comando precedente eseguirà l'iterazione sugli elementi specificati dopo il In parola chiave una per una. Gli elementi possono essere numeri, stringhe o altre forme di dati.

Ciclo for basato su intervallo

Possiamo usare cicli for basati su intervallo. In questo tipo di ciclo, possiamo specificare il numero da avviare, interrompere e incrementare ad ogni iterazione (facoltativa) nell'istruzione. Esistono due modi per farlo, ovvero menzionando il valore di incremento/decremento e incrementando di uno per impostazione predefinita. La sintassi è simile alla seguente:

#!/bin/bash  for n in {1..5};  do  echo $n done 

500

Nel codice sopra, usiamo {} per specificare un intervallo di numeri. All'interno delle parentesi graffe specifichiamo il punto iniziale seguito da due punti e un punto finale. Per impostazione predefinita, incrementa di uno. Quindi stampiamo 5 numeri da 1 a 5 entrambi compresi.

#!/bin/bash  for n in {1..5..2};  do  echo $n done 

502

Qui possiamo vedere che il ciclo è aumentato di 2 unità come indicato tra parentesi graffe. Pertanto, questo rende il lavoro con i numeri molto semplice e conveniente. Può essere utilizzato anche con caratteri alfabetici.

NOTA: Non possiamo usare variabili all'interno delle parentesi graffe, quindi dovremo codificare i valori. Per utilizzare le variabili, vedremo i tradizionali cicli for in stile C nelle prossime sezioni.

Iterazione dell'array per i loop

Possiamo eseguire iterazioni sugli array comodamente in bash utilizzando cicli for con una sintassi specifica. Possiamo usare le variabili speciali in BASH cioè @ per accedere a tutti gli elementi nell'array. Diamo un'occhiata al codice:

#!/bin/bash  s=('football' 'cricket' 'hockey')  for n in ${s[@]};  do  echo $n done 

503

Possiamo scorrere gli elementi dell'array utilizzando l'operatore @ che ottiene tutti gli elementi dell'array. Quindi, utilizzando il ciclo for, li iteriamo uno per uno. Usiamo la variabile ${variable_name[@]} in cui le parentesi graffe qui espandono il valore della variabile s qui che è un array di stringhe. Utilizzando l'operatore [@] accediamo a tutti gli elementi e quindi iteriamo su di essi nel ciclo for. Ecco, il N è l'iteratore, quindi possiamo stampare il valore o eseguire l'elaborazione richiesta su di esso.

Stile C per loop

Come detto in precedenza, dobbiamo utilizzare le variabili all'interno dei cicli for per scorrere una serie di elementi. E quindi, i cicli for in stile C svolgono un ruolo molto importante. Vediamo come li utilizziamo.

#!/bin/bash  n=7 for (( i=1 ; i <=$n ; i++ ));  do  echo $i done 

504

Come possiamo vedere possiamo utilizzare dinamicamente il valore dell'intervallo di condizioni finali. Ricorda che gli spazi tra le doppie parentesi graffe potrebbero essere intenzionali e fanno parte della sintassi. I cicli for in stile C sono i cicli che hanno 3 parti, l'iteratore di inizializzazione, l'incremento/decrementatore e la condizione finale.

Nella sintassi precedente, abbiamo inizializzato l'iteratore/contatore del ciclo su 1 che può essere qualsiasi cosa, a scelta. La seconda parte è la condizione finale, qui abbiamo utilizzato la variabile N che viene inizializzato prima del ciclo for e quindi usiamo il semplice $ operatore per ottenere il valore della variabile. Infine abbiamo l'incremento/decremento che cambia l'iteratore/contatore in un valore che può essere qualsiasi cosa ma, nell'esempio, abbiamo utilizzato l'operatore unario (++) per incrementare il valore di uno che equivale a io=io+1 . Quindi possiamo usare affermazioni come i+=2, i–,++i, E così via e così via.

Ciclo for infinito

Non lo usiamo spesso, ma a volte è utile per far funzionare certe cose. La sintassi è abbastanza semplice e simile ai cicli for in stile C.

#!/bin/bash  n=4 for (( ; ; ));  do  if [ $n -eq 9 ];then  break  fi  echo $n  ((n=n+1)) done 

Il ciclo inizia con n> impostato su 4. Incrementa n> per 1 ad ogni iterazione e stampa il valore di n> Fino a n> diventa uguale a 9. Quando n> raggiunge 9, il break> l'istruzione viene eseguita e il ciclo termina. Lo script si ferma dopo aver stampato i numeri da 4 a 8.

505

Come possiamo vedere, il ciclo 'for' non ha condizioni e si ripete all'infinito, ma abbiamo un'istruzione condizionale per verificare che non vada avanti all'infinito. Usiamo l'istruzione break all'interno dell'istruzione if in modo da uscire dal ciclo e interrompere l'iterazione con l'iteratore. Abbiamo utilizzato l'incremento per incrementare la variabile nel ciclo altrimenti il ​​ciclo è infinito. Naturalmente, abbiamo bisogno di un po' di logica per uscire dal ciclo ed è per questo che dobbiamo usare l'istruzione condizionale if.