Korištenje petlje ‘while’ u Bash skriptama za ponavljanje naredbi.
Bash (Bourne Again Shell) je naredbeni redak ljuske i skriptni jezik u GNU/Linux operativnim sustavima. To je zadana ljuska za većinu Linux distribucija.
Kao i većina skriptnih jezika, Bash nudi sintaksu petlje za ponavljanje sličnog zadatka više puta. U ovom članku ćemo naučiti kako koristiti dok
petlja u Bashu.
Uvod
The dok
petlja u Bashu se koristi za izvršavanje naredbi (naredbi) (izvršenih naredbi) više puta na temelju izlaza druge naredbe (naredbi) (naredbe uvjeta). Izvršene naredbe nastavit će se izvoditi sve dok se naredba uvjeta ne pokrene uspješno (tj. vrati status 0. Svaka naredba u Linuxu vraća 0 za uspjeh i cijeli broj koji nije nula za neuspjeh).
Ako postoji više naredbi uvjeta, izraz uzima u obzir samo status posljednje naredbe na popisu, tj. petlja se izvršava dok se posljednja naredba na popisu ne pokrene uspješno.
Opća sintaksa
Opća sintaksa za dok
petlja u Bashu je:
dok radite
Popis naredbi za izvršavanje nastavit će se izvoditi sve dok se posljednja naredba na popisu naredbi uvjeta ne pokrene uspješno i izađe sa statusom 0. U iteraciji, kada posljednja naredba uvjeta ne uspije, petlja izlazi.
Korisnik može odrediti bilo koju izvršnu datoteku u popisu naredbi. To mogu biti standardni Linux programi ili prilagođeni korisnički programi ili skripte. Svaka naredba treba biti ili na novom retku ili odvojena točkom i zarezom u istom retku.
Pogledajmo nekoliko primjera.
Petlja dok varijabla ne dobije određenu vrijednost: Sljedeća petlja se izvodi do vrijednosti varijable x
nije jednako 10.
x=0 dok [[ $x -ne 10 ]] odjekuje $x ((x++)) gotovo
U svakoj iteraciji provjeravamo je li vrijednost x 10. Vrijednost se provjerava pomoću test
naredba. [[ Izraz ]]
je sintaksa za test naredbu (vidi muški test
). Ovdje budući da koristimo -ne
operator (koji označava 'nije jednako'), testna naredba vraća 0, tj. uspjeh, ako vrijednost x nije 10, i vraća vrijednost koja nije nula, tj. neuspjeh ako je vrijednost x 10.
Zatim unutar učiniti...gotovo
blok, ispisujemo vrijednost x i povećavamo je. Nakon što je vrijednost x 10, testna naredba vraća status koji nije nula i petlja izlazi.
Bilješka: Indeksna varijabla koja će se koristiti u while petlji treba biti inicijalizirana ili prije petlje while ili u naredbama uvjeta, za razliku od for petlje, što omogućuje implicitnu inicijalizaciju varijable.
S više naredbi uvjeta: Sljedeća petlja stvara 5 imenika dir0, dir1, ... dir4
.
z=0 dok echo "Popis datoteka:" ls -l [[ $z -ne 5 ]] do echo "Kreiranje dir$z..." mkdir dir$z ((z++)) gotovo
Prve naredbe echo "Popis datoteka:"
i ls -l
izvršit će se jednom u potpunosti; njihov uspjeh ili neuspjeh nema nikakav utjecaj na to koliko dugo će petlja trajati.
Tada će se izvršiti testna naredba za provjeru vrijednosti varijable z. Sve dok vrijednost z nije 5, testna naredba vraća status uspjeha i stoga petlja nastavlja raditi. Naredbe uvjeta i izvršene naredbe nastavljaju raditi po redu. Ovdje će za svaku iteraciju prvo pokrenuti naredbu echo i naredbu ls u stanju, a zatim će naredba 3. uvjeta provjeravati vrijednost z. Ako nije 5, ulazi u petlju i izvršava zadane naredbe.
Prekini i nastavi
Izjava o prekidu za uvjetni izlaz
Također možemo koristiti uvjetni izraz ako
unutar petlje. The ako
izjava se može koristiti s a pauza
izjavu, za uvjetni izlazak iz petlje.
x=0 dok [[ $x -ne 10 ]] radi ako [[ $x -eq 5 ]] break fi echo $x ((x++)) gotovo
Gornja petlja while će ispisati brojeve od 0 do 4. Zatim kada je vrijednost i 5, ona će izbiti iz petlje. Ovo je od posebne koristi kada treba izaći iz petlje kada naredba daje određeni izlaz.
Naredba Continue za uvjetno preskakanje iteracije
Bash također ima a nastaviti
izraz, za preskakanje preostalog dijela iteracije u petlji ako je zadovoljen određeni uvjet.
x=0 dok [[ $x -ne 10 ]] radi ako [[ $x -eq 5 ]] nastavi fi echo $x ((x++)) gotovo
Gornja petlja će ispisati brojeve od 0 do 10, osim 5, jer tijekom iteracije x=5
postoji naredba continue, koja će preskočiti ostatak koda u petlji na početku s iteracijom x=6
.
Korištenje petlji: skripte i naredbeni redak
Sintakse petlje mogu se koristiti u Bash ljusci izravno ili iz izvršne datoteke skripte ljuske. Slično za
i dok
petlje, jednom an dok
sintaksa petlje je unesena u ljusku, ljuska nastavlja s promptom kako bi korisniku omogućio da nastavi s naredbama koje treba petljati.
U suprotnom, korisnik to može spremiti u datoteku skripte i izvršiti datoteku skripte.
The #!/bin/bash
na početku određuje interpreter koji će se koristiti kada se datoteka izvršava. Iako je Bash najčešće korištena školjka danas, neki korisnici preferiraju školjke poput zsh
, koji bi trebao biti naveden umjesto bash na početku ove datoteke.
Da biste dali dopuštenja za izvršavanje za ovu datoteku pokrenite:
chmod +x test.sh
Konačno, da izvršite datoteku, trčanje:
./test.sh
Zaključak
The dok
petlja, slično za
i do
petlje su važna značajka u Bash skriptiranju. Dok petlja ima sličnu upotrebu kao petlja do, osim što se koristi za pokretanje alternativnih naredbi/programa kada određeni program uspije. Ovo često nalazi svoju korisnost u naprednim mrežnim skriptama, skriptama za održavanje sustava itd.