Come scrivere loop in Bash con esempi

Come automatizzare con bash for loop sotto il sistema operativo Linux/UNIX? Come posso utilizzare break, continue e parametro per l’espressione di controllo del ciclo? Come agire sui file usando il ciclo for?
Il ciclo for è uno strumento molto utile per risolvere molti problemi nel mondo della programmazione, e quindi risolveremo alcuni problemi del mondo reale. In Linux usiamo loop attraverso Bash, Python per eseguire automazioni come script password, count script. In questo articolo, spiegheremo tutti i tipi di loop per Bash.
1) per ciclo
Possiamo usare il ciclo For per leggere tutti o parte degli elementi in un elenco e visualizzare questi elementi sullo schermo.
Sintassi del ciclo For
per variabile in elemento1 elemento2 elemento3 Or
fare
ordini
Completato
Creeremo uno script per inviare un messaggio di saluto per ogni giorno della settimana, quindi lo useremo for loop da leggere ogni giorno e stamparlo. Crea file welcome.sh insieme a nano editor e incolla il codice qui sotto.
#!/bin/bash
for day in Sunday Saturday Monday Tuesday Wednesday Thursday Friday
do
echo "Welcome $day day"
done
Rotolo welcome.sh file con bash comando.
$ bash welcome.sh
output
Welcome Sunday day
Welcome Saturday day
Welcome Monday day
Welcome Tuesday day
Welcome Wednesday day
Welcome Thursday day
Welcome Friday day
Il ciclo for prenderà ogni elemento nell’elenco e assegnerà quell’elemento rispettivamente alla variabile $daydopodiché esegui il codice between do e done quindi torna all’inizio, assegna l’elemento successivo nell’elenco e ripeti.
Possiamo usare un intervallo con un ciclo for per impostare il punto iniziale e il punto finale.
#!/bin/bash
for i in {10..20}
do
echo "Welcome $i times"
done
$ bash range.sh
output
Welcome 10 times
Welcome 11 times
Welcome 12 times
Welcome 13 times
Welcome 14 times
Welcome 15 times
Welcome 16 times
Welcome 17 times
Welcome 18 times
Welcome 19 times
Welcome 20 times
Se vogliamo contare il numero pari da 1 a 20, aggiungeremo step per l’intervallo.
#!/bin/bash
for i in {10..20..2}
do
echo "Welcome $i times"
done
$ bash even.sh
output
Welcome 10 times
Welcome 12 times
Welcome 14 times
Welcome 16 times
Welcome 18 times
Welcome 20 times
Un altro modo per utilizzare il passaggio del ciclo for.
#!/bin/bash
for ((i=1;i<=25;i+=5))
do
echo $i
done
$ bash step5.sh
output
1
6
11
16
21
E per passo negativo possiamo usare il seguente tipo.
#!/bin/bash
for ((i=25;i>=1;i-=5))
do
echo $i
done
$ bash step-5.sh
output
25
20
15
10
5
Esempi sul ciclo For
1) Agisci sui file usando il ciclo for
Bash For loop è il modo migliore quando si lavora sui file.
#!/bin/bash
for file in ~/*.txt
do
echo $file
done
$ bash find_txt.sh
output
/root/cat.txt
/root/echo.txt
/root/file.txt
/root/f.txt
/root/nano.txt
/root/printf.txt
2) Una linea ad anello
possiamo eseguire il ciclo For in una riga, li rinomineremo tutti *.txt file per rimuovere l’estensione del file.
$ for filename in *.txt; do mv "$filename" "${filename%.txt}"; done
O nella sceneggiatura
!#/bin/bash
for filename in *.txt
do
mv "$filename" "${filename%.txt}"
done
3) Lettura degli argomenti dalla riga di comando
Quando eseguiamo lo script For loop, possiamo passare argomenti.
for myvalue in $*
do
echo "Argument: $myvalue"
done
$ bash linoxide.sh I Love LinOxide
output
Argument: I
Argument: Love
Argument: LinOxide
4) Lettura di numeri pari e dispari
Scriveremo uno script per leggere i numeri pari e dispari.
for (( n=10; n<=15; n++ ))
do
if (( $n%2==0 ))
then
echo "$n is even"
else
echo "$n is odd"
fi
done
$ bash even_odd.sh
output
10 is even
11 is odd
12 is even
13 is odd
14 is even
15 is odd
2) ciclo while
Mentre il ciclo dipende dal fatto che la condizione sia vera, se la condizione è falsa, l’interprete esce dal ciclo.
La sintassi del ciclo while
mentre [ <some condition> ]fare
Completato
Conteremo da 10 a 20 e stamperemo i risultati. Quindi metteremo una condizione che il contatore sia minore o uguale a 20.
#!/bin/bash
# Basic while loop
counter=10
while [ $counter -le 20 ]
do
echo Number : $counter
((counter++))
done
$ bash while.sh
output
Number : 10
Number : 11
Number : 12
Number : 13
Number : 14
Number : 15
Number : 16
Number : 17
Number : 18
Number : 19
Number : 20
3) Fino al giro
Il ciclo until è come il ciclo while, ma l’interprete esegue i comandi in esso contenuti finché la condizione non diventa vera.
Sintassi fino al ciclo
Fino a [ <some condition> ]fare
Completato
Conteremo da 10 a 20 e stamperemo i risultati. Quindi metteremo una condizione che il contatore sia maggiore o uguale a 20.
#!/bin/bash
# Basic Until loop
counter=10
until [ $counter -gt 20 ]
do
echo Number : $counter
((counter++))
done
$ bash until.sh
output
Number : 10
Number : 11
Number : 12
Number : 13
Number : 14
Number : 15
Number : 16
Number : 17
Number : 18
Number : 19
Number : 20
4) Circuiti di controllo
Possiamo usare Break o Continue per controllare i loop.
Dichiarazione di rottura
per Break istruzione, possiamo uscire dal ciclo e non è necessario completare il ciclo quando usiamo if istruzione all’interno del ciclo.
#!/bin/bash
# Basic loop use break
counter=10
until [ $counter -gt 20 ]
do
echo Number : $counter
if [ $counter -eq 15 ]
then
echo Done
break
fi
((counter++))
done
$ bash break.sh
output
Number : 10
Number : 11
Number : 12
Number : 13
Number : 14
Number : 15
Done
Continua la dichiarazione
Per Continue istruzione, possiamo eseguire il ciclo e non è necessario terminare il ciclo quando lo usiamo if istruzione all’interno del ciclo.
#!/bin/sh
NUMS="1 2 3 4 5 6 7"
for NUM in $NUMS
do
Q=`expr $NUM % 2`
if [ $Q -eq 0 ]
then
echo "A number is an even number!!"
continue
fi
echo "Found odd number"
done
$ bash continue.sh
output
Found odd number
A number is an even number!!
Found odd number
A number is an even number!!
Found odd number
A number is an even number!!
Found odd number
5) Selezionare il ciclo
Seleziona il ciclo come il ciclo while e until, ma ti consente di creare un semplice sistema di menu.
Sintassi del ciclo di selezione
selezionare var in fare
Completato
Faremo tre opzioni e useremo select loop per scegliere tra di loro.
#!/bin/bash
# select script
PS3='Please enter your choice: '
options=("Option 1" "Option 2" "Option 3" "Quit")
select opt in "${options[@]}"
do
case $opt in
"Option 1")
echo "you choose choice 1"
;;
"Option 2")
echo "you choose choice 2"
;;
"Option 3")
echo "you choose choice $REPLY which is $opt"
;;
"Quit")
break
;;
*) echo "invalid option $REPLY";;
esac
done
$ bash select.sh
output
1) Option 1
2) Option 2
3) Option 3
4) Quit
Please enter your choice: 1
you chose choice 1
Please enter your choice: 5
invalid option 5
Please enter your choice: 4
Conclusione
- Bash For loop utilizzato in sincronizzazione, creazione di password, backup e così via…
- Do while è uguale a while, ma l’interprete esegue il primo codice senza alcuna condizione
- L’istruzione Break è molto importante per uscire dal ciclo
- L’istruzione Select è utile quando abbiamo molte scelte

