Ricerca nel sito web

Come utilizzare il ciclo Until negli script della shell


In bash for, mentre e until sono tre costrutti di loop. Sebbene ogni ciclo differisca sintatticamente e funzionalmente, il loro scopo è eseguire l'iterazione su un blocco di codice quando viene valutata una determinata espressione.

Il ciclo Until viene utilizzato per eseguire un blocco di codice finché l'espressione non viene valutata come falsa. Questo è esattamente l'opposto di un ciclo while. Il ciclo While esegue il blocco di codice mentre l'espressione è vera e il ciclo until fa il contrario.

until [ expression ]
do
	code block
	...
	...
done

Analizziamo la sintassi.

  • Per avviare il ciclo è necessario utilizzare la parola chiave Until seguita da un'espressione racchiusa tra parentesi graffe singole o doppie.
  • L'espressione deve essere valutata come falsa fino all'avvio dell'esecuzione del blocco di codice.
  • Il blocco di codice vero e proprio viene inserito tra do e done.

In questo breve articolo imparerai come utilizzare il ciclo Until negli script della shell utilizzando i seguenti esempi.

Crea un ciclo infinito negli script

Puoi creare un ciclo infinito utilizzando un'istruzione false come espressione. Quando provi a simulare cicli infiniti, prova a utilizzare sleep che trasmetterà periodicamente lo script.

count=0
until false
do
	echo "Counter = $count"
	((count++))
	sleep 2
done

Crea istruzioni a riga singola

È possibile creare istruzioni di loop a riga singola. Dai un'occhiata al codice seguente. Questo è lo stesso del nostro primo esempio di ciclo infinito ma in una singola riga. Qui devi usare un punto e virgola (;) per terminare ogni istruzione.

until false; do echo "Counter = $count"; ((count++)); sleep 2; done

Modificare il flusso con l'istruzione break e continue

Puoi utilizzare istruzioni break e continue all'interno del ciclo mentre. L'istruzione break uscirà dal ciclo e passerà il controllo all'istruzione successiva mentre l'istruzione continue salterà l'iterazione corrente e avvierà l'iterazione successiva nel ciclo.

Sto usando lo stesso esempio di ciclo infinito. Qui quando il conteggio è uguale a cinque l'istruzione continua salterà all'iterazione successiva saltando il resto del corpo del ciclo. Allo stesso modo, il ciclo si interrompe quando il conteggio è uguale o maggiore di 10.

count=0
until false
do
  ((count++))
  if [[ $count -eq 5 ]]
  then
    continue
  elif [[ $count -ge 10 ]]
  then
    break
  fi
  echo "Counter = $count"
done

Per questo articolo è tutto. Presto ti aggiorneremo con un altro articolo interessante "fino", quindi continua a leggere e continua a sostenerci.