LINUX

Come scrivere loop in Bash con esempi

bash per ciclo

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

  1. Bash For loop utilizzato in sincronizzazione, creazione di password, backup e così via…
  2. Do while è uguale a while, ma l’interprete esegue il primo codice senza alcuna condizione
  3. L’istruzione Break è molto importante per uscire dal ciclo
  4. L’istruzione Select è utile quando abbiamo molte scelte

Leggi anche:

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Back to top button
Close