Naučite kako koristiti Bash For Loop u Shell skriptama


U programskim jezicima, petlje su bitne komponente i koriste se kada želite ponavljati kod iznova i iznova dok se ne ispuni određeni uvjet.

U Bash skriptiranju, petlje imaju gotovo istu ulogu i koriste se za automatiziranje zadataka koji se ponavljaju baš kao u programskim jezicima.

U Bash skriptiranju postoje 3 vrste petlji: petlja for, petlja while i petlja do. Ova tri se koriste za ponavljanje popisa vrijednosti i izvođenje zadanog skupa naredbi.

U ovom ćemo se vodiču usredotočiti na Bash For Loop u Linuxu.

Kao što je ranije spomenuto, petlja for ponavlja raspon vrijednosti i izvršava skup naredbi.

For petlja ima sljedeću sintaksu:

for variable_name in value1 value2 value3  .. n
do
    command1
    command2
    commandn
done

Provjerimo sada nekoliko primjera upotrebe bash for petlje.

Bash Simple For petlja

U svom najjednostavnijem obliku, For petlja ima sljedeći osnovni format. U ovom primjeru, varijabla n iterira preko grupe numeričkih vrijednosti u vitičastim zagradama i ispisuje njihove vrijednosti u stdout.

for n in {1 2 3 4 5 6 7};
do
   echo $n
done

Bash For petlja s rasponima

U prethodnim smo primjerima eksplicitno naveli vrijednosti koje treba ponavljati for petlja, što sasvim dobro funkcionira. Međutim, možete samo zamisliti koliko bi to bio glomazan i dugotrajan zadatak kada biste ponavljali preko, na primjer, stotinu vrijednosti. To bi vas natjeralo da upišete sve vrijednosti od 1 do 100.

Da biste riješili ovaj problem, odredite raspon. Da biste to učinili, navedite broj za početak i kraj odvojen s dvije točke.

U ovom primjeru, 1 je prva vrijednost dok je 7 posljednja vrijednost u rasponu.

#!/bin/bash

for n in {1..7};
do
   echo $n
done

Nakon što se skripta ljuske izvrši, sve vrijednosti u rasponu su navedene, slično onome što smo imali u jednostavnim petljama.

Dodatno, možemo uključiti vrijednost na kraju raspona koja će uzrokovati ponavljanje for petlje kroz vrijednosti u inkrementalnim koracima.

Sljedeća bash skripta ispisuje vrijednosti između 1 i 7 s 2 inkrementalna koraka između vrijednosti počevši od prve vrijednosti.

#!/bin/bash

for n in {1..7..2};
do
   echo $n
done

Iz gornjeg primjera možete vidjeti da je petlja povećala vrijednosti unutar vitičastih zagrada za 2 vrijednosti.

Bash For petlje s nizovima

Također možete jednostavno iterirati kroz vrijednosti definirane u nizu pomoću petlje za. U sljedećem primjeru, petlja for iterira kroz sve vrijednosti unutar polja plodova i ispisuje ih u stdout.

#!/bin/bash

fruits=("blueberry" "peach" "mango" "pineapple" "papaya") 

for n in ${fruits[@]}; 
do
    echo $n
done

Operator @ pristupa svim elementima ili ih cilja. To omogućuje ponavljanje svih elemenata jedan po jedan.

Osim toga, možete pristupiti jednom elementu navođenjem njegovog položaja unutar polja.

Na primjer, da biste pristupili elementu “mango”, zamijenite operator @ pozicijom elementa u nizu (prvi element počinje s 0, tako da će u ovom slučaju “mango” biti označen s 2).

Ovako izgleda for petlja.

#!/bin/bash

fruits=("blueberry" "peach" "mango" "pineapple" "papaya") 

for n in ${fruits[2]}; 
do
    echo $n
done

Bash petlje For u stilu C

Možete koristiti varijable unutar petlji za ponavljanje niza elemenata. Ovdje na scenu dolaze for petlje u C stilu. Sljedeći primjer ilustrira for petlju u C stilu koja ispisuje popis numeričkih vrijednosti od 1 do 7.

#!/bin/bash

n=7
for (( n=1 ; n<=$n ; n++ )); 
do
    echo $n
done

Bash C-stilizirane petlje For s uvjetnim naredbama

Možete uključiti uvjetne naredbe unutar for petlji u C stilu. U sljedećem primjeru smo uključili if-else naredbu koja provjerava i ispisuje parne i neparne brojeve između 1 i 7.

#!/bin/bash

for (( n=1; n<=7; n++ ))
do  
    # Check if the number is even or not
    if (( $n%2==0 ))
    then
        echo "$n is even"
    else
        echo "$n is odd"
    fi  
done

Koristite naredbu 'Nastavi' s Bashom za petlju

Izjava 'nastavi' je ugrađena naredba koja kontrolira kako se skripta izvodi. Osim bash skriptiranja, također se koristi u programskim jezicima kao što su Python i Java.

Naredba continue zaustavlja trenutnu iteraciju unutar petlje kada se ispuni određeni uvjet, a zatim nastavlja iteraciju.

Razmotrite for petlju prikazanu u nastavku.

#!/bin/bash
for n in {1..10}
do
        if [[ $n -eq '6' ]]
        then
              echo "Target $n has been reached"
              continue
        fi
        echo $n
done

Evo što kod radi:

  • Redak 2: Označava početak for petlje i ponavlja varijablu n od 1 do 10.
  • Redak 4: Provjerava vrijednost n i ako je varijabla jednaka 6, skripta šalje poruku u stdout i ponovno pokreće petlju u sljedećoj iteraciji u retku 2.
  • Redak 9: Ispisuje vrijednosti na ekran samo ako je uvjet u retku 4 netočan.

Sljedeći je očekivani rezultat nakon pokretanja skripte.

Koristite naredbu 'break' s Bash For Loop

Naredba 'break', kao što ime sugerira, zaustavlja ili završava ponavljanje kada je ispunjen uvjet.

Razmotrite For petlju u nastavku.

#!/bin/bash
for n in {1..10}
do
        if [[ $n -eq '6' ]]
        then
                echo "Target $n has been reached"
                break
        fi
        echo $n
done
echo "All done"

Evo što kod radi:

  • Redak 2: Označava početak for petlje i ponavlja varijablu n od 1 do 10.
  • Redak 4: Provjerava vrijednost n i ako je varijabla jednaka 6, skripta šalje poruku u stdout i zaustavlja ponavljanje.
  • Redak 9: Ispisuje brojeve na ekranu samo ako je uvjet u retku 4 netočan.

Iz izlaza možete vidjeti da se petlja zaustavlja kada varijabla ispuni uvjet petlje.

To je bio vodič o Bash For petljama. Nadamo se da vam je ovo bilo pronicljivo. Slobodno dajte svoje povratne informacije.