Petlja Bash 'Do': Vodič i primjeri

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.