GNU/Linux >> Linux Esercitazione >  >> Linux

Esempi di Bash for loop

Ci sono molte volte in uno script di shell quando si desidera eseguire ripetutamente un'istruzione o un gruppo di istruzioni finché non si verifica una condizione specificata. Inoltre, potresti voler eseguire un gruppo di istruzioni per ogni elemento in un determinato elenco. La shell fornisce tre costrutti di loop per queste situazioni:i costrutti for, while e until.

Il ciclo for consente di specificare un elenco di valori. Viene eseguito un gruppo di istruzioni per ogni valore nell'elenco.

Per la sintassi del ciclo

Il ciclo for nella shell accetta un elenco di parole (stringhe) come argomento. Il numero di parole nell'elenco determina il numero di volte in cui vengono eseguite le istruzioni nel ciclo for. La sintassi per il ciclo for è:

for variable in element1 element2 element3 
do
	commands 
done

dove:

  • variabile :è qualsiasi nome di variabile.
  • elementi (elenco_argomenti) :può essere qualsiasi elenco di parole, stringhe o numeri e può essere letterale o generato utilizzando un comando della shell o un metacarattere della riga di comando della shell.
  • comandi :I comandi possono essere qualsiasi comando del sistema operativo, un programma utente, uno script di shell o un'istruzione di shell che restituisce (produce) un elenco.

Il valore della variabile var viene impostato sulla prima parola nell'elenco la prima volta che si esegue il ciclo. La seconda volta che si esegue il ciclo, il suo valore viene impostato sulla seconda parola nell'elenco e così via. Il ciclo termina quando var ha assunto a sua volta ciascuno dei valori dall'elenco degli argomenti e non ci sono argomenti rimanenti.

L'elenco degli argomenti del ciclo for

L'elenco di argomenti in un ciclo for può essere qualsiasi elenco di parole , stringhe o numeri . Genera l'elenco di argomenti utilizzando uno dei seguenti metodi (o una combinazione di metodi):

  • Utilizza un elenco esplicito
  • Utilizza il contenuto di una variabile
  • Utilizza argomenti della riga di comando
  • Usa la sostituzione dei comandi
  • Usa i nomi dei file nella sostituzione dei comandi

Esempio 1:ciclo For che utilizza un elenco esplicito per specificare argomenti

Quando gli argomenti sono elencati per un ciclo for, sono chiamati un elenco esplicito. Un elenco esplicito è la forma più semplice di un elenco di argomenti. Il ciclo viene eseguito una volta per ogni elemento dell'elenco. L'esempio seguente è un ciclo for che utilizza un elenco esplicito di elementi:

#!/bin/bash
for fruit in apple orange banana peach kiwi 
do
    echo "Value of fruit is: $fruit"
done

L'output di questo ciclo for è:

Value of fruit is: apple 
Value of fruit is: orange 
Value of fruit is: banana 
Value of fruit is: peach 
Value of fruit is: kiwi

Esempio 2:ciclo For usando i contenuti variabili per specificare gli argomenti

Quando gli argomenti sono in una variabile e l'istruzione viene eseguita, il contenuto della variabile viene sostituito. Nell'esempio seguente, il testo immesso al prompt diventa il valore della variabile INPUT. Questa variabile rappresenta l'elenco degli argomenti del costrutto for. Pertanto, il testo in INPUT è suddiviso in parole o token basati su spazi bianchi.

$ cat ex1.sh 
#!/bin/bash
# Script name: ex1.sh
echo "Enter some text: \c" 
read INPUT
for var in $INPUT 
do
	echo "var contains: $var"
done
$ ./ex1.sh
Enter some text: I like the Bash shell. 
var contains: I
var contains: like
var contains: the
var contains: Korn
var contains: shell.

Esempio 3:ciclo For usando argomenti della riga di comando per specificare argomenti

Nell'esempio seguente, il testo immesso nella riga di comando diventa l'elenco degli argomenti del costrutto for. Pertanto, il testo della riga di comando è suddiviso in parole o token basati su spazi bianchi.

$ cat ex2.sh
#!/bin/bash
# Script name: ex2.sh
for var in $* 
do
	echo "command line contains: $var"
done
$ ./ex2.sh I am The Geek.
command line contains: I
command line contains: am
command line contains: The
command line contains: Geek.

Esempio 4:ciclo For che utilizza la sostituzione dei comandi per specificare gli argomenti

La sintassi per la sostituzione dei comandi in una shell Bash è:

for var in `cmd_sub`

L'esempio seguente utilizza l'output del comando cat come elenco di argomenti.

$ cat fruit1 
apple 
orange 
banana 
peach
kiwi
$ cat ex4.sh 
#!/bin/bash
# Script name: ex4.sh
for var in `cat fruit2` 
do
	echo "var contains: $var"
done
$ ./ex4.sh
var contains: Apple 
var contains: Orange 
var contains: Banana 
var contains: Peach 
var contains: Kiwi

Se il file contenente l'elenco era nel seguente formato, qual è il risultato del ciclo for.

$ cat fruit3
Apple Orange Banana Peach Kiwi
$ cat ex5.sh 
#!/bin/bash
# Script name: ex5.sh
for var in `cat fruit3` 
do
	echo "$var"
done
$ ./ex5.sh
Apple 
Orange 
Banana 
Peach 
Kiwi

Nell'esempio sopra, i risultati non cambiano. La variabile IFS è qualsiasi spazio bianco, quindi sia un ritorno a capo che uno spazio o una tabulazione separano ogni campo nel file.

Esempio 5:ciclo For che utilizza i nomi dei file nella sostituzione dei comandi per specificare gli argomenti

Alcuni comandi forniscono nomi di file e nomi di directory come output. Nell'esempio seguente, la shell sostituisce l'output del comando, ls /etc/p*(/etc/passwd/etc/profile e così via), come elenco di argomenti per il ciclo for.

$ cat ex7.sh 
#!/bin/bash
# Script name: ex7.sh
for var in `ls /etc/p*`
do
	print "var contains: $var"
done
# ./x.sh 
var contains: /etc/passwd
var contains: /etc/passwd-
var contains: /etc/printcap
var contains: /etc/profile
....
Bash if loop esempi (se allora fi, se poi elif fi, se poi altrimenti fi)


Linux
  1. Come scrivere un ciclo in Bash

  2. Bash For Loop Guida ed esempi

  3. Scripting Linux:3 istruzioni per i cicli while in Bash

  4. Parallelizzare un Bash For Loop?

  5. 12 Esempi di Bash For Loop per gli script della tua shell Linux

35 Esempi di script Bash

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