Loop nidificato negli esempi di script bash

Loop nidificato negli esempi di script bash

Nella programmazione o script, il loop è uno dei concetti più elementari e potenti. Un ciclo sta eseguendo determinati compiti fino a quando non vengono soddisfatte le condizioni specifiche. Ogni linguaggio di programmazione o scripting ha diversi modi per implementare il concetto.

In questa guida, controlla il ciclo nidificato in Bash Scripting.

Loop nidificato

Un ciclo, per definizione, sta svolgendo determinati compiti fino a quando le condizioni non vengono soddisfatte. Cosa succede se l'attività include l'esecuzione di un ciclo? Questo è il concetto di un ciclo nidificato. Un loop all'interno di un ciclo.

Questa è la struttura di base di un ciclo.

while (condizione)
# qualcosa

Qui, il ciclo while continuerà a eseguire le attività dichiarate all'interno del blocco fintanto che la condizione è soddisfatta. Nel caso di un anello nidificato, la struttura sembrerebbe così.

# Loop principale
while (condizione)
# Loop nidificato
while (condizione)
# qualcosa

In teoria, i loop nidificati possono andare alla profondità infinita. In molte situazioni, i loop nidificati possono essere la soluzione perfetta.

Loop in Bash Script

Bash è un linguaggio di scripting potente. Ci sono diverse strutture ad anello nel bash. Quelli più popolari sono per, mentre e fino a quando i loop. Se hai familiarità con la programmazione C/C ++ prima, la sintassi sembrerà sicuramente abbastanza simile.

Per i loop

Per il ciclo è una delle forme più comuni e versatili, ecc. La struttura dei loop negli script bash. La struttura assomiglia anche a loop in C/C ++ molto.

La struttura di per loop in bash è la seguente.

per ((inizializza; condizione; incremento)); Fare
# qualcosa
Fatto

La struttura è molto autoesplicativa. La sezione di inizializzazione non è obbligatoria. Tuttavia, la condizione e l'incremento hanno una priorità maggiore.

Mettiamolo in azione. Ecco una sceneggiatura bash molto semplicistica che implementa il ciclo.

per ((i = 0; i < 5 ; i++)); do
Echo "Hello World"
Fatto

È anche possibile utilizzare l'elenco/intervallo come condizione di loop. È particolarmente utile se si lavora con un elenco di file, gamme di numeri, array, output di comandi, ecc. La struttura assomiglia a questa.

per l'oggetto in ; Fare
# qualcosa
Fatto

Ad esempio, il seguente script stamperà cinque volte "Hello World".

per i in 1… 5; Fare
Echo "Hello World"
Fatto

E se dovessimo lavorare con il contenuto di una directory? Nell'esempio seguente, lo script stamperà tutti i file nella directory.

per I in/usr/bin/*; Fare
Echo $ i
Fatto

Ora, cosa facciamo per avere un nidificato per loop? È solo uno per loop all'interno di un altro. Ecco un nidificato per loop usando l'esempio precedente.

per ((i = 0; i < 3 ; i++)); do
per ((j = 0; j < 2 ; j++)); do
Echo "Hello World"
Fatto
Fatto

L'output sarà "Hello World" 6 volte. Il ciclo esterno verrà eseguito tre volte, eseguendo il ciclo interno due volte.

Mentre i loop

Il ciclo while è un altro ciclo popolare e intuitivo disponibile su Bash Scripting. La sintassi sembra così.

Mentre ; Fare
# qualcosa
Fatto

Nell'esempio seguente, lo script stamperà cinque volte "Hello World".

Num = 1
mentre [$ num -le 5]; Fare
Echo "Hello World"
num = $ (($ num+1))
Fatto

Come sarebbe avere un nidificato durante il ciclo? Ecco un semplice esempio.

num_a = 1
NUM_B = 1
mentre [$ num_a -le 5]; Fare
mentre [$ num_b -le 5]; Fare
Echo "Hello World"
num_b = $ (($ num_b+1))
Fatto
num_a = $ (($ num_a+1))
Fatto

Fino a loop

Se hai uno sfondo di programmazione in C/C ++, allora hai familiarità con il loop do-while. Sfortunatamente, Bash non ha niente del genere. Tuttavia, fino a quando il ciclo opera in modo simile. La sintassi sembra anche la stessa.

Fino a [ ]; Fare
# qualcosa
Fatto

La differenza tra il tempo e fino a quando il ciclo è la condizione di prova. Finché la condizione di test è vera, un po 'continuerà a funzionare. Un loop fino a quando, tuttavia, continuerà a funzionare solo se la condizione è falsa.

Ecco un rapido esempio del ciclo while. Stamperà la tabella di moltiplicazione di 2.

num_a = 1
fino a [$ num_a -gt 10]; Fare
echo $ (($ num_a * 2))
num_a = $ (($ num_a+1))
Fatto

Pausa loop

In alcune situazioni, se sono soddisfatte determinate condizioni, il resto del ciclo diventa ridondante. Le interruzioni del ciclo sono una caratteristica interessante che consente di uscire dal loop a una determinata condizione. È più importante per i loop nidificati poiché maggiori sono i loop, più consumo di risorse e inefficienza.

Qui, quanto segue per smettere di eseguire non appena raggiungerà la condizione.

per ((i = 1; i<=100;i++)); do
Echo $ i
se [$ i -eq 10]; Poi
rottura
fi
Fatto

Scopri come rompere mentre loop per spiegazione approfondita e dimostrazione delle pause del loop.

Pensieri finali

Un ciclo nidificato è un concetto semplice e potente da comprendere e implementare. Speriamo che questa guida sia stata in grado di descrivere e dimostrare il concetto.

Interessato a altre guide di script bash? Dai un'occhiata alle seguenti guide.

  • Bash Infinite Loop
  • Input utente Bash Script
  • Funzione Bash Array di ritorno

Felice calcolo!