GNU/Linux >> Linux Esercitazione >  >> Linux

Bash mentre Loop

I loop sono uno dei concetti fondamentali dei linguaggi di programmazione. I loop sono utili quando vuoi eseguire una serie di comandi un certo numero di volte finché non viene soddisfatta una condizione particolare.

Nei linguaggi di scripting come Bash, i loop sono utili per automatizzare le attività ripetitive. Ci sono tre costrutti di ciclo di base nello scripting Bash, for ciclo, while ciclo e until ciclo.

Questo tutorial copre le basi di while loop in Bash. Ti mostreremo anche come utilizzare il break e continue istruzioni per alterare il flusso di un ciclo.

Bash while Ciclo #

Il while loop viene utilizzato per eseguire un determinato insieme di comandi un numero imprecisato di volte fintanto che la condizione data restituisce true.

La Bash while loop assume la forma seguente:

while [CONDITION]
do
  [COMMANDS]
done

Il while l'istruzione inizia con il while parola chiave, seguita dall'espressione condizionale.

La condizione viene valutata prima di eseguire i comandi. Se la condizione restituisce true, i comandi vengono eseguiti. In caso contrario, se la condizione restituisce false, il ciclo viene terminato e il controllo del programma verrà passato al comando che segue.

Nell'esempio seguente, ad ogni iterazione, il valore corrente della variabile i viene stampato e incrementato di uno.

i=0

while [ $i -le 2 ]
do
  echo Number: $i
  ((i++))
done

Tue loop continua finché i è minore o uguale a due. Produrrà il seguente output:

Number: 0
Number: 1
Number: 2

Infinito while Ciclo #

Un ciclo infinito è un ciclo che si ripete all'infinito e non termina mai. Se la condizione restituisce sempre true, ottieni un ciclo infinito.

Nell'esempio seguente, stiamo usando il comando integrato : per creare un ciclo infinito. : restituisce sempre vero. Puoi anche usare true built-in o qualsiasi altra affermazione che restituisce sempre true.

while :
do
  echo "Press <CTRL+C> to exit."
  sleep 1
done

Il while il ciclo precedente verrà eseguito a tempo indeterminato. Puoi terminare il ciclo premendo CTRL+C .

Ecco un equivalente a riga singola:

while :; do echo 'Press <CTRL+C> to exit.'; sleep 1; done

Leggi un file riga per riga #

Uno degli usi più comuni del while loop è leggere un file, un flusso di dati o una variabile riga per riga.

Ecco un esempio che legge il /etc/passwd file riga per riga e stampa ogni riga:

file=/etc/passwd

while read -r line; do
  echo $line
done < "$file"

Invece di controllare il while loop con una condizione, stiamo usando il reindirizzamento dell'input (< "$file" ) per passare un file a read comando, che controlla il ciclo. Il while il ciclo verrà eseguito fino alla lettura dell'ultima riga.

Quando leggi un file riga per riga, usa sempre read con il -r opzione per impedire che la barra rovesciata agisca come carattere di escape.

Per impostazione predefinita, il read il comando taglia gli spazi vuoti iniziali/finali (spazi e tabulazioni). Usa IFS= opzione prima di read per prevenire questo comportamento:

file=/etc/passwd

while IFS= read -r line; do
  echo $line
done < "$file"

break e continue Dichiarazioni #

La break e continue Le istruzioni possono essere utilizzate per controllare l'esecuzione del ciclo while.

break Dichiarazione #

La break termina il ciclo corrente e passa il controllo del programma al comando che segue il ciclo terminato. Di solito viene utilizzato per terminare il ciclo quando viene soddisfatta una determinata condizione.

Nell'esempio seguente, l'esecuzione del ciclo verrà interrotta una volta che l'elemento correntemente iterato sarà uguale a 2 .

i=0

while [ $i -lt 5 ]
do
  echo "Number: $i"
  ((i++))
  if [[ "$i" == '2' ]]; then
    break
  fi
done

echo 'All Done!'
Number: 0
Number: 1
All Done!

continue Dichiarazione #

Il continue esce dall'iterazione corrente di un ciclo e passa il controllo del programma all'iterazione successiva del ciclo.

Di seguito, una volta che l'elemento iterato corrente è uguale a 2 il continue istruzione farà tornare l'esecuzione all'inizio del ciclo e per continuare con l'iterazione successiva.

i=0

while [ $i -lt 5 ]
do
  ((i++))
  if [[ "$i" == '2' ]]; then
    continue
  fi
  echo "Number: $i"
done

echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!

Conclusione #

Il while loop esegue ripetutamente un dato insieme di comandi fintanto che una condizione è vera.

Se hai domande o feedback, sentiti libero di lasciare un commento.


Linux
  1. Come scrivere un ciclo in Bash

  2. Ssh provoca l'interruzione del loop?

  3. Bash Beginner Series #8:Loop in Bash

  4. Esempi di Bash For Loop e While Loop

  5. Tieniti aggiornato - Bash For, While, Until Esempi di loop

Bash For Loop

Bash fino a Loop

Bash pausa e continua

Bash Scripting - Mentre e fino a ciclo spiegato con esempi

Il ciclo while negli script della shell

Il ciclo Bash FOR spiegato e semplificato