Una caratteristica essenziale di ogni linguaggio di programmazione per computer è la capacità di eseguire ripetutamente un pezzo di codice. Risparmia molto tempo e riduce anche le righe di codice in un programma. La programmazione Bash consente agli utenti di eseguire un'attività ancora e ancora utilizzando i loop. In questo articolo, esamineremo il For Loop dichiarazione.
Un Ciclo For istruzione viene utilizzata per eseguire una serie di comandi fino a quando una particolare condizione diventa falsa. Ad esempio, puoi usarlo per eseguire un comando Linux cinque volte o usarlo per leggere ed elaborare file sui sistemi fino a raggiungere una condizione particolare.
Comando Bash For Loop
Il Ciclo For nella programmazione Bash è disponibile in due diverse sintassi:
- Il For In Loop
for item in (list) do command_one command_two ... done
Nella sintassi For In Loop sopra, ci sono quattro parole chiave:for, in, do e done. L'elenco si riferisce ai valori nell'"elenco". Item è un nome di variabile che non è una parola chiave nel linguaggio di programmazione Bash.
Quando eseguiamo il programma, eseguirà il comando in base al numero di elementi nell'"elenco". Pertanto, se l'elenco contiene cinque cifre, (1 2 3 4 5), il comando viene eseguito cinque volte.
In ogni iterazione, il valore nell'elenco viene memorizzato nella variabile item e utilizzato nel corpo del programma.
- Il For Loop con una sintassi simile a quella del linguaggio di programmazione C
for (( expression_1; expression_2; expression_3)) do command_one command_two ... done
Con l'istruzione For Loop sopra, se sei uno sviluppatore C, C++ o Java, dovresti avere familiarità con la sintassi. 'expression_1 sta per inizializzazione, expression_2 sta per condition e expression_3 sta per aggiornamento.
Quando eseguiamo il programma, 'expression_1' viene valutata prima di eseguire la prima iterazione inizializzando i valori delle variabili per il ciclo For.
Il corpo del programma viene eseguito finché expression_2 non è TRUE. Il corpo del programma qui si riferisce ai comandi tra le parole chiave do e done. Ora, dopo ogni iterazione del programma, viene valutata expression_3.
Dopo averlo capito, diamo un'occhiata ad alcuni esempi di Bash For Loop che puoi utilizzare nelle tue attività quotidiane lavorando con i sistemi Linux. Scriveremo script e li eseguiremo nel terminale. Nota, tutti gli script Bash utilizzano l'estensione '.sh.'.
Usa For Loop per stampare una serie di stringhe
È possibile utilizzare un ciclo For In per stampare una serie di stringhe. Dai un'occhiata al codice qui sotto. Abbiamo già i tre file utilizzati nel programma nella nostra directory di lavoro. Questo è "testFile1", "testFile2" e "testFile3".
#!/bin/bash for item in testFile1 testFile2 testFile3 do cat $item echo "Done with file $item" echo done
L'output è:
Il programma sopra elenca il contenuto del file specificato nell'elenco. Cioè, testFile1, testFile2 e testFile3. Il comando 'cat' è un'utilità Linux utilizzata per visualizzare il contenuto di un file.
Pertanto, il programma scorre i file che iniziano con "testFile1", esegue il comando "cat" su di esso prima di stampare l'istruzione "fatto con testFilee" e scorre al file successivo.
Dopo aver ripetuto tutti i file nell'elenco, il programma si chiude automaticamente.
'For In Loop' con elementi Array per eseguire il backup dei file
È possibile utilizzare un ciclo For In per scorrere gli elementi in una matrice. Dai un'occhiata al codice qui sotto.
#!/bin/bash Files=('testFile1' 'testFile2' 'testFile3') for item in "${Files[@]}"; do cp $item{,.bak} echo "Created a backup of $item" done
L'output è come mostrato di seguito.
Il programma sopra utilizza il comando cp per creare backup dei file nell'array. Mentre scorre ogni file, crea un backup dei dati e stampa il "messaggio di backup creato" prima di passare all'elemento successivo nell'array.
'For In Loop' con intervallo
Puoi scorrere su un intervallo di numeri. Ad esempio, desideri scorrere tra le cifre da 1 a 100. Scrivere tutti questi numeri nel tuo programma renderà il codice abbastanza grande. Possiamo risolverlo utilizzando gli intervalli. Dai un'occhiata al codice qui sotto.
#!/bin/bash for i in {0..50} do echo "COUNT: $i" done
L'output dovrebbe essere come mostrato di seguito.
Dall'output sopra, vediamo che il programma ha stampato i numeri da 1 a 50. È perché gli abbiamo assegnato un intervallo di 1 - 50 cifre.
Si supponga di voler creare un intervallo che salti un certo numero di cifre prima di stampare un output. Quindi dovremo includere un terzo parametro nella sintassi dell'intervallo. Vedi il codice qui sotto.
#!/bin/bash for i in {0..100..10} do echo "COUNT: $i" done
L'output dovrebbe essere come mostrato di seguito.
L'output dovrebbe essere come mostrato di seguito.
Dall'immagine sopra, vediamo che il programma ha stampato i numeri da 0 a 100 ma saltando dieci (10) cifre in ogni iterazione.
'For Loop' con sintassi di programmazione C
Dopo aver esaminato diversi esempi con "For In Loop", diamo un'occhiata all'altra sintassi For Loop. Contiene un'espressione di inizializzazione che inizializza il ciclo, un'espressione di condizione che determina l'esecuzione del programma e un'espressione di incremento che aggiorna il valore della variabile.
Dai un'occhiata al codice qui sotto.
#!/bin/bash for (( i=5; i>=1; i-- )) do echo "COUNT: $i" done
L'output dovrebbe essere come mostrato di seguito.
Crea un ciclo infinito con For Loop
Per creare un ciclo infinito in Bash, useremo la sintassi di programmazione C. Vedi il codice qui sotto.
#!/bin/bash for (( ; ; )) do echo "Use Ctrl+C to terminate the loop." echo "Starting Infinite Loop..." done
L'output dovrebbe essere come mostrato di seguito.
Per uscire da un ciclo infinito, premi Ctrl + C per annullare il processo.
Dichiarazioni Break and Continue in un "For Loop"
Nella programmazione, le istruzioni Break e Continue controllano l'esecuzione di un programma. L'istruzione Break termina il programma ed esce dal ciclo. L'istruzione Continue, invece, forza l'esecuzione della successiva iterazione del programma.
-
La dichiarazione di rottura
Diamo un'occhiata al programma di seguito, che utilizza l'istruzione Break.
#!/bin/bash for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux do if [[ "$distro" == 'kali' ]]; then break fi echo "Linux_distribution: $distro" done
L'output dovrebbe essere come mostrato di seguito.
Dall'immagine sopra, vediamo che "Kali" non è stato stampato nell'output. È perché abbiamo fornito una "Condizione If" che controllava il valore contenuto dalla variabile "distro". Se il valore era "Kali", l'istruzione "break" veniva eseguita e terminava il ciclo.
Come puoi vedere, ArchLinux non è stato stampato nell'output perché l'istruzione break ha terminato il programma.
La dichiarazione Continua
A differenza dell'istruzione Break, l'istruzione Continue termina il programma su quella parte ma forza l'esecuzione dell'iterazione successiva del programma.
Dai un'occhiata al codice qui sotto.
#!/bin/bash for distro in Ubuntu Manjaro Debian Fedora Kali ArchLinux do if [[ "$distro" == 'Kali' ]]; then continue fi echo "Linux_distribution: $distro" done
L'output dovrebbe essere come mostrato di seguito.
Dall'immagine sopra, vediamo che "Kali" non è stato stampato nell'output. È perché abbiamo fornito una "Condizione If" che controllava per vedere il valore detenuto dalla variabile "distro". Se il valore era "Kali", l'istruzione "continue" veniva eseguita. A questo punto ha terminato il Loop ma ha forzato l'esecuzione della parte successiva del programma.
Come puoi vedere, "Kali" non è stato stampato nell'output mentre "ArchLinux" lo era. L'istruzione Continue ha forzato l'esecuzione della parte successiva del programma.
Programmi Bash più pratici utilizzando il ciclo For
Dopo aver esaminato diversi programmi Bash utilizzando l'istruzione "For Loop", diamo un'occhiata a esempi di vita reale che puoi utilizzare per gestire i tuoi sistemi Linux.
- Un programma Bash per convertire file MP3 in WAV
In questo programma, avrai bisogno dello strumento MPG123 installato nel tuo sistema. Il codice seguente cerca qualsiasi file con estensione '.mp3.' e lo converte in un file '.wav.' utilizzando lo strumento 'mpg123'.
#!/bin/bash for item in ./*.mp3 do mpg123 -w music.wav $item.mp3 done
Dall'immagine qui sotto, vediamo che abbiamo convertito "Audio.mp3" in "Music.wav".
- Programma 'For Loop' per verificare se esistono file firefox.desktop.
Il programma seguente eseguirà un'iterazione su tutti i file presenti nella directory applications/ e fornirà un output per verificare se firefox.desktop è presente.
#!/bin/bash for item in /usr/share/applications/* do if [ "${item}" == "/usr/share/applications/firefox.desktop" ] then echo "Firefox.Desktop is present in the applications directory"; fi done
Conclusione
Ora che hai imparato a usare il For Loop istruzione nella programmazione Bash, crea programmi per automatizzare varie attività nei tuoi sistemi Linux. Se hai trovato utile questo articolo, sentiti libero di condividere il link con i tuoi amici.