Korištenje petlje 'until' u Bash skripti za petlju preko 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čnih zadataka više puta. U ovom članku ćemo naučiti kako koristiti do
petlja u Bashu.
Uvod
The do
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 naredba uvjeta ne bude uspjela (tj. vrati status koji nije nula. Svaka naredba u Linuxu vraća 0 za uspjeh i cijeli broj koji nije nula za neuspjeh). Ovo je upravo suprotno od dok
petlja, u kojoj se izvršene naredbe nastavljaju izvoditi dok uvjetna naredba ne bude uspješna.
Ako postoji više uvjetnih naredbi, izraz uzima u obzir samo status posljednje naredbe na popisu, tj. petlja će se izvoditi sve dok posljednja naredba na popisu ne bude uspjela.
Opća sintaksa
Opća sintaksa za do
petlja u Bashu je:
dok ne završite
Popis naredbi za izvršavanje će se izvoditi sve dok posljednja naredba na popisu naredbi uvjeta ne uspije. Nakon što je posljednja naredba uspješna, petlja izlazi.
Korisnici mogu odrediti bilo koju izvršnu datoteku u popisima 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
je 10.
x=0 dok [[ $x -eq 10 ]] ne ponovi $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
).
Zatim unutar učiniti...gotovo
blok, jednostavno ispisujemo vrijednost x i povećavamo je. Petlja izlazi nakon što je naredba uvjeta uspješna, tj. kada $x
jednako je 10
.
Bilješka: Indeksna varijabla koja će se koristiti u petlji 'until' mora se inicijalizirati ili prije petlje 'until' ili u naredbama uvjeta, za razliku od petlje for, koja omogućuje implicitnu inicijalizaciju varijable.
S više naredbi uvjeta: Sljedeća petlja stvara 5 imenika dir0, dir1, ... dir4
.
z=0 do echo "Bok" echo "Zbogom" [[ $z -eq 5 ]] do echo "Kreiranje dir$z..." mkdir dir$z ((z++)) gotovo
Prve naredbe echo "Bok" i echo "Bye" 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 ova naredba ne uspijeva, tj. dok vrijednost z ne bude 5, naredbe uvjeta i izvršene naredbe nastavljaju raditi po redu. Ovdje će za svaku iteraciju prvo pokrenuti 2 echo naredbe 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 -eq 10 ]] učini ako [[ $x -eq 5 ]] prekine fi echo $x ((x++)) gotovo
Gornja petlja do ispisat će 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
naredba za preskakanje preostalog dijela iteracije u petlji ako je zadovoljen određeni uvjet.
x=0 dok [[ $x -eq 10 ]] učini 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 do
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 do
petlja je još jedna važna značajka u Bash skriptiranju. Ima posebnu važnost u složenim skriptama kada se očekuje da će određeni skup programa vratiti status neuspjeha, a neke druge naredbe moraju biti izvršene za bilježenje neuspjeha, detaljan prikaz pogreške ili jednostavno izvođenje nekih alternativnih programa.