Bash 'While' petlja: Vodič i primjeri

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.