GNU/Linux >> Linux Esercitazione >  >> Linux

Bash continua:come riprendere un ciclo

Introduzione

Il continue istruzione è un builtin Bash che altera il flusso dei loop di script. Il concetto non è esclusivo di Bash e appare in altri linguaggi di programmazione.

Il modo migliore per capire come Bash continue la dichiarazione funziona attraverso esempi pratici.

Questo tutorial mostra come usare Bash continue dichiarazione negli script Bash.

Prerequisiti

  • Una macchina che esegue Linux o macOS.
  • Un editor di testo per gli esempi.
  • Conoscenza di base dello scripting Bash.

La dichiarazione continua di Bash

Il continue di Bash istruzione riprende l'iterazione seguente in un ciclo o un'istruzione di ciclo.

La sintassi è:

continue <integer>

Il continue istruzione ha significato solo se applicata ai loop. Il valore intero indica la profondità per il continue dichiarazione. Per impostazione predefinita, il numero intero è 1 e scrivere il numero non è obbligatorio. Aumenta il numero per riprendere un'istruzione di ciclo esterno.

Usa un continue istruzione come istruzione di controllo del ciclo. Ad esempio, il continue istruzione aiuta a terminare l'iterazione corrente all'interno di un ciclo quando soddisfa una condizione specifica. A seconda del tipo di ciclo, il programma riprende all'iterazione successiva o riavvia il ciclo.

Bash continua Esempi

Di seguito sono riportati esempi e spiegazioni sull'utilizzo dell'istruzione continue negli script Bash.

I seguenti costrutti di ciclo primario mostrano come funziona l'istruzione:

  • Il ciclo for continua all'iterazione successiva se combinato con continue.
  • L'istruzione continue riavvia il while e until loop.

Il select comando appare anche negli esempi, anche se non è un costrutto di ciclo primario. L'istruzione funziona come un ciclo e continue istruzione funziona per qualsiasi comando di ciclo.

Utilizzare Bash continua con un ciclo for

Usa il continue istruzione all'interno di un condizionale se per controllare il flusso di un for :

#!/bin/bash

for i in {1..10}
do
	if [[ $i == '9' ]]
	then
		echo "Number $i!"
		continue
	fi
	echo "$i"
done
echo "Done!"

Il codice esegue le seguenti operazioni:

  • Riga 3 avvia il for condizione di ciclo, iterando la variabile i da 1 a 10 .
  • Riga 5 controlla il i valore. Quando la variabile è uguale a 9 , il programma fa eco a un messaggio e riavvia il ciclo all'iterazione successiva (riga 3 ).
  • Riga 10 stampa il numero sulla console solo quando l'istruzione condizionale nella riga 5 è Falso .

Esegui lo script per vedere i risultati.

L'output stampa tutti i singoli numeri sulla console. Quando la condizione nella riga 5 restituisce True ($i == '9' ), la console fa eco a un messaggio.

Utilizzo di Bash Continua con Nested Loop

Il continue l'istruzione funziona con loop nidificati anche. Ad esempio, usa continue 2 per riprendere un ciclo esterno:

#!/bin/bash

for i in {1..5}
do
        for j in {1..5}
        do
                if [[ $i -eq $j ]]
                then
                        echo "$i = $j"
                        continue 2
                fi
                echo "$i =/= $j"
        done
done

echo "Done!"

Il programma esegue le seguenti operazioni:

  • Riga 3 avvia il ciclo esterno, incrementando la variabile i da 1 a 5 .
  • Riga 5 avvia un ciclo for interno, incrementando la variabile j da 1 a 5 per ogni i incremento.
  • Riga 7 controlla se le variabili i e j sono uguali ($i -eq $j ). Se lo sono, il continue 2 istruzione riprende il ciclo esterno all'iterazione successiva. Tuttavia, se i valori sono diversi, il programma continua come previsto.

Esegui lo script per vedere l'output del programma.

Ogni volta che i due valori sono uguali, il primo numero aumenta.

Usare Bash continua con un po' di loop

Di seguito è riportato un esempio di script Bash che utilizza <strong>continue</strong> dichiarazione in un while ciclo:

#!/bin/bash

i=0

while [[ $i -lt 11 ]] 
do
	if [[ "$i" == '9' ]]
	then
		echo "Number $i!"
		((i++))
		continue
	fi
	echo $i
	((i++))
done

Ogni riga esegue le seguenti operazioni:

  • Riga 3 definisce una variabile i e imposta il valore su 0 .
  • Riga 5 avvia un while ciclo continuo. La condizione finale è quando i è inferiore a 11 .
  • Riga 7 indica un controllo delle condizioni utilizzando un if dichiarazione. Quando la variabile i è uguale a 9 , il programma procede alle linee 9-11 . In tutti gli altri casi, il codice salta alla riga 13 .
  • Righe 9-11 stampa un messaggio sulla console, incrementa i e il continue l'istruzione riprende il ciclo alla riga 5 .
  • Righe 13 e 14 stampa la variabile i alla console e incrementarlo.

Per vedere l'output, esegui lo script dal terminale.

Il programma stampa tutti i numeri sulla console. A causa delle istruzioni condizionali e continue, viene stampato un messaggio diverso per il numero 9 .

Utilizzare Bash continua con un ciclo fino a

Combina il continue dichiarazione con un until ciclo e fornire una condizione per modificare il comportamento del ciclo per un determinato valore. Ad esempio, prova il seguente script:

#!/bin/bash

i=0

until [[ $i -gt 10  ]]
do
	if [[ $i -eq 9  ]]
	then
		echo "Number $i!"
		((i++))
		continue
	fi
	echo $i
	((i++))
done

Il codice incrementa una variabile e scorre finché il valore non raggiunge 10 . Quando la variabile è uguale a 9 , il programma emette un messaggio diverso. Il continue l'istruzione riavvia il until loop e continua come al solito.

Utilizzare Bash Continua con un ciclo selezionato

Il select command è un caso particolare perché non è un ciclo di scripting Bash primario. Il comando crea menu che richiedono l'input dell'utente. Usa il continue istruzione per fornire un output diverso in base al valore selezionato dall'utente.

Ad esempio, prova il seguente script Bash:

#!/bin/bash

PS3="Choose a number: "

select i in {1..10}
do
	echo "Selected number: $i"
	if [[ $REPLY -eq 9 ]]
	then
		echo "Number $i!"
		continue
	fi
done

Lo script è composto dai seguenti elementi:

  • Il PS3 nella riga 3 c'è il messaggio sul display per il select ciclo.
  • Riga 5 definisce la condizione del ciclo, elencando i numeri da 1 a 10 . La variabile i memorizza l'input dell'utente.
  • Riga 7 fa eco alla selezione.
  • Riga 8 esegue un controllo. Se il valore immesso dall'utente è 9 , il programma stampa un messaggio sulla console e continua la select ciclo all'iterazione successiva.

Esegui lo script e verifica valori diversi per vedere l'output.

Per uscire dal programma, premi CTRL +C o aggiungi una dichiarazione di interruzione.


Linux
  1. Come utilizzare l'istruzione if else condizionali nello script Bash

  2. Come eseguire il debug di uno script Bash?

  3. Come fermare lo script Loop Bash nel terminale?

  4. Come riprendere una sessione di Gnome?

  5. Come ottenere lo stato di uscita un ciclo in bash

Dichiarazione del caso Bash

Bash if..else Statement

Bash pausa e continua

Bash Scripting – Case Statement

Come lavorare con l'istruzione Case negli script Bash

Come eseguire uno script Bash