10 Басх Фор Лооп примера са објашњењима

Razumevanje i Korišćenje For Petlje u Bash Skriptama

For petlja je ključna konstrukcija u programiranju, prisutna u skoro svakom jeziku. Ona omogućava iteraciju, odnosno ponavljanje određenog bloka koda nad nizom stavki ili u određenom opsegu. Zamislite situaciju u kojoj treba da obradite listu elemenata; for petlja je idealno rešenje za taj zadatak.

Na primer, ako imate listu ili niz od ‘n’ stavki, for petlja je savršena alatka za prolazak kroz sve njih. Ilustrujmo ovo jednostavnom tabelom:

1 Ljubičasta
2 Indigo
3 Plava
4 Zelena
Dugine Boje

Da bismo obavili neku operaciju ili ponovili stavke iz ove tabele, neophodna nam je for petlja.

Bash For Petlja

U Bash skriptama, sintaksa for petlje izgleda ovako:


#!/bin/bash

for VAR in 1 2 3 4 5 ... N
do
  AKCIJA 1
  AKCIJA 2
  ...
done
  

Bash for petlja je prilično jednostavna. Prva linija #!/bin/bash definiše da je kod Bash skripta. VAR je privremena promenljiva koja se koristi za iteraciju. N označava ukupan broj iteracija. Ključne reči do i done označavaju početak i kraj bloka for petlje. Akcije su komande koje se izvršavaju unutar petlje.

Bash for petlja može raditi s različitim tipovima podataka, kao što su liste, stringovi, celi brojevi i nizovi. U nastavku ćemo demonstrirati nekoliko uobičajenih primera upotrebe.

Ove primere možete pokretati direktno u Bash komandnoj liniji ili ih sačuvati u datoteku i izvršiti pomoću komande bash ime_datoteke.sh.

Obrada Statičke Liste

Pretpostavimo da imamo sledeću listu: dugineBoje = ljubičasta, indigo, plava, zelena, žuta, narandžasta, crvena.

Ovu listu stringova možemo ispisati pomoću for petlje u Bash-u, kao što je prikazano u sledećem primeru:


#!/bin/sh

# Definišemo listu
dugineBoje="Ljubičasta,Indigo,Plava,Zelena,Žuta,Narandžasta,Crvena"

# Petlja za iteraciju, koristeći zarez kao separator
for boja in ${dugineBoje//,/ }
do
   echo $boja
done
  

Izlaz će biti lista stavki, svaka u novom redu.


#Izlaz

Ljubičasta
Indigo
Plava
Zelena
Žuta
Narandžasta
Crvena
  

Obrada Niza

Sintaksa za deklarisanje niza je malo drugačija. Koristimo zagrade za svaki element (string).


duginNiz=("Ljubičasta" "Indigo" "Plava" "Zelena" "Žuta" "Narandžasta" "Crvena")

for boja in "${duginNiz[@]}"; do
    echo "Sviđa mi se $boja"
done
  

Simbol @ se koristi za iteriranje kroz svaki element niza.


#Izlaz

Sviđa mi se Ljubičasta
Sviđa mi se Indigo
Sviđa mi se Plava
Sviđa mi se Zelena
Sviđa mi se Žuta
Sviđa mi se Narandžasta
Sviđa mi se Crvena
  

For petlju možemo koristiti i za ispis indeksa i elemenata niza.


#Ispis sa indeksom

duginNiz=("Ljubičasta" "Indigo" "Plava" "Zelena" "Žuta" "Narandžasta" "Crvena")

for i in "${!duginNiz[@]}";
do
  echo "Boja na indeksu " $i " : " "${duginNiz[$i]}"
  i=$((i+1));
done
  

#Izlaz

Boja na indeksu 0 : Ljubičasta
Boja na indeksu 1 : Indigo
Boja na indeksu 2 : Plava
Boja na indeksu 3 : Zelena
Boja na indeksu 4 : Žuta
Boja na indeksu 5 : Narandžasta
Boja na indeksu 6 : Crvena
  

Važno je zapamtiti da koristimo ! unutar petlje da bismo dobili indeks elementa.

Iteriranje kroz Opseg Brojeva

Bash for petlju možemo koristiti za ponavljanje niza brojeva.


#Iteriranje kroz opseg brojeva

echo "Odbrojavanje počinje..."

for N in {10..0}
do
   echo "$N"
done
  

Simbol .. označava opseg brojeva.


#Izlaz

10
9
8
7
6
5
4
3
2
1
0
  

Možemo preskočiti brojeve u odbrojavanju navođenjem koraka.

U primeru ispod, preskačemo brojanje za 3.


#Iteriranje sa preskokom

echo "Odbrojavanje počinje..."

for N in {30..0..3}
do
   echo "$N"
done
  

Gornji program počinje sa 30 kao prvim brojem i odbrojava do 0. Poslednji parametar u for petlji, 3, određuje korak preskakanja.


#Izlaz

30
27
24
21
18
15
12
9
6
3
0
  

Stringovi i Karakteri

Možemo obavljati razne string operacije pomoću Bash for petlje.

Na primer, možemo pročitati svaki karakter stringa koristeći operator seq u for petlji:


#Čitanje karaktera stringa

mojaRec="dobrodošli"

for i in $(seq 1 ${#mojaRec})
do
    echo "${mojaRec:i-1:1}"
done
  

Važno je napomenuti da seq mora početi sa 1 da bi se dobio prvi karakter.


#Izlaz

d
o
b
r
o
d
o
š
l
i
  

Takođe možemo ispisati reči iz rečenice, jednu po jednu:


#Čitanje svake reči iz rečenice

mojaRecenica="Dobrodošli na techblog.co.rs. Jedna stanica za sve tehničare"

for reč in $mojaRecenica; do
   echo $reč
done
  

#Izlaz

Dobrodošli
na
techblog.co.rs.
Jedna
stanica
za
sve
tehničare
  

Izrazi

Slično drugim programskim jezicima, poput Jave, možemo definisati izraze unutar Bash for petlje.


for (( var=10; var>=0; var-- ))
do 
  echo "Odbrojavanje...$var"
done
  

#Izlaz

Odbrojavanje...10
Odbrojavanje...9
Odbrojavanje...8
Odbrojavanje...7
Odbrojavanje...6
Odbrojavanje...5
Odbrojavanje...4
Odbrojavanje...3
Odbrojavanje...2
Odbrojavanje...1
Odbrojavanje...0
  

Čitanje Argumenata Komandne Linije

Za čitanje argumenata komandne linije koristimo komandu read. U primeru ispod, od korisnika ćemo dobiti nekoliko brojeva i ispisati njihov zbir koristeći Bash for petlju. Koristimo promenljivu total da čuvamo međuzbir i konačan zbir brojeva.


read -a niz -p "Unesite brojeve koje želite da saberete: "

total=0

for i in ${niz[@]}; do
    let total+=$i
done

echo "Zbir brojeva je: $total"
  

Izlaz je:


#Izlaz

Unesite brojeve koje želite da saberete: 3 4 66
Zbir brojeva je: 73
  

Pronalaženje Neparnih i Parnih Brojeva

Da bismo pronašli neparne i parne brojeve između 1 i 10 (ili bilo kog broja N), koristimo uslov if zajedno sa Bash for petljom. Da bismo odredili da li je broj paran, delimo ga sa 2 i ako je ostatak 0, klasifikujemo ga kao paran, u suprotnom kao neparan.


#Deklarišemo liste u kojima će se čuvati parni i neparni brojevi

parniBrojevi=""
neparniBrojevi=""

for (( i=1; i<=10; i++ ))
do
    ostatak=$(( $i % 2 ))
    if [ $ostatak -eq 0 ]; then
      parniBrojevi="$parniBrojevi $i "
    else
      neparniBrojevi="$neparniBrojevi $i "
    fi
done

echo "Parni brojevi su: "$parniBrojevi
echo "Neparni brojevi su: "$neparniBrojevi
  

Imajte na umu da smo u gornjem primeru postavili opseg na 10. Možemo promeniti ovaj broj da dobijemo parne i neparne brojeve u bilo kom opsegu. Takođe možete pokušati da pročitate broj od korisnika pomoću komande read koju smo koristili u prethodnom delu.


#Izlaz

Parni brojevi su: 2 4 6 8 10
Neparni brojevi su: 1 3 5 7 9
  

Beskonačna Petlja

Beskonačna petlja je petlja koja se neprekidno izvršava. Program mora biti zaustavljen ručno pomoću Ctrl+C. Jednostavno možemo kreirati beskonačnu petlju koristeći ; ; operator unutar for petlje:


for (( ; ; ))
do
   echo "Dobrodošli na techblog.co.rs"
done
  

#Izlaz

Dobrodošli na techblog.co.rs
Dobrodošli na techblog.co.rs
Dobrodošli na techblog.co.rs
Dobrodošli na techblog.co.rs
Dobrodošli na techblog.co.rs
Dobrodošli na techblog.co.rs
Dobrodošli na techblog.co.rs
Dobrodošli na techblog.co.rs
Dobrodošli na techblog.co.rs
Dobrodošli na techblog.co.rs
^C
$
  

Break Izjava

break izjava se koristi za izlazak iz petlje kada je ispunjen određeni if uslov.


for boja in Ljubičasta Indigo Plava Zelena Žuta Narandžasta Crvena
do
  if [[ "$boja" == 'Zelena' ]]; then
    break
  fi
  echo "Tražim zelenu, trenutna boja je $boja"
done
echo "Pronašao sam boju $boja"
  

U ovom primeru pokušavamo da pronađemo zelenu boju. For petlja prolazi kroz sve boje i kada se pronađe zelena, program izlazi iz petlje zahvaljujući break naredbi.


#Izlaz

Tražim zelenu, trenutna boja je Ljubičasta
Tražim zelenu, trenutna boja je Indigo
Tražim zelenu, trenutna boja je Plava
Pronašao sam boju Zelena
  

Continue Izjava

continue se koristi za preskakanje trenutne iteracije petlje i prelazak na sledeću na osnovu uslova. Na primer, ako ne želimo da ispišemo boju ‘Zelena’ iz našeg prethodnog primera, možemo koristiti continue, a sve ostale boje će biti prikazane osim zelene.


for boja in Ljubičasta Indigo Plava Zelena Žuta Narandžasta Crvena
do
  if [[ "$boja" == 'Zelena' ]]; then
    continue
  fi
  echo "$boja"
done
  

#Izlaz

Ljubičasta
Indigo
Plava
Žuta
Narandžasta
Crvena
  

Završne Reči

Pokrili smo najčešće upotrebe Bash for petlje, koristeći nizove, cele brojeve, stringove i liste. Ako učite Linux, a imate Windows 10 mašinu, možete koristiti WSL funkciju i instalirati Linux na svoj Windows računar.

Zatim možete koristiti Linux terminal na sličan način kao CMD.

Možete pogledati i Kako pokrenuti bash skripte koristeći Python?