Kako napisati Bash WHILE-petlje

Naredbe, sintakse i primjeri

Možete izvršiti niz naredbi tako da ih zapišete u datoteku skripte, a zatim pokrenete.

Skripta je jednostavno tekstualna datoteka, obično s nastavkom .SH datoteke, koja sadrži niz uputa koje se također mogu izvršiti iz naredbenog retka ( shell ).

Dok su primjeri petlji

Ispod je primjer kratke petlje. Kada se izvrši, ova datoteka skripta će ispisati brojeve od 1 do 9 na zaslonu. While-statement vam daje veću fleksibilnost za određivanje uvjeta prestanka od for-loop .

#! / bin / bash count = 1 dok [$ count -le 9] odjekuje "$ count" sleep 1 ((count ++)) učinjeno

Primjerice, prethodnu skriptu možete napraviti beskonačnu petlju tako što ćete izostaviti izjavu o prirastu "((count ++))":

#! / bin / bash count = 1 dok [$ count -le 9] echo "$ count" spava 1 učinio

Izjava "sleep 1" zaustavlja izvršavanje 1 sekundu na svakoj iteraciji. Koristite tipkovnički prečac Ctrl + C da biste prekinuli postupak.

Također možete stvoriti beskonačnu petlju stavljanjem dvotočke kao uvjet:

#! / bin / bash count = 1 dok: echo "$ count" sleep 1 ((count ++)) učinjeno

Da biste koristili više uvjeta u mikroprocesu, morate upotrijebiti dvostruki kvadratni zaglavni okvir:

count [1] (count + +)) ako [[count count == 5]; a zatim učinjeno $ done = 1 fi

U ovoj skripti varijabla "done" je inicijalizirana na 0, a zatim postavljena na 1 kada broj dosegne 5. Stanje petlje navodi da će se petlja nastaviti dok god "broj" bude manje od devet, a "učinjeno" je jednako na nulu. Stoga petlje izlaze kada je broj jednak 5.

"&&" znači logičan "i" i "||" znači logično "ili".

Alternativni zapis za poveznice "i" i "ili" u uvjetima je "-a" i "-o" sa pojedinačnim kvadratnim zagradama. Gore navedeno stanje:

[[$ count -le 9] && [$ done == 0]]

... može se prepisati kao:

[$ count -le 9] -a [$ done == 0]

Čitanje tekstualne datoteke obično se radi s petlja. U sljedećem primjeru skripta bash čita redak sadržaja redakom datoteke "inventory.txt:"

FILE = inventory.txt exec 6

Prva linija dodjeljuje naziv ulazne datoteke u varijablu "FILE". Druga linija sprema "standardni ulaz" u deskriptor datoteka "6" (može biti bilo koja vrijednost između 3 i 9). To je učinjeno tako da se "standardni unos" može vratiti na deskriptor datoteka "0" na kraju skripte (vidi izjavu "exec 0 U 3. retku ulazna datoteka dodjeljuje deskriptoru datoteka" 0 ", koja se koristi za standardni unos. Izjava "očitana" čita redak iz datoteke na svakoj iteraciji i dodjeljuje ga promjenama "line1".

Da biste prerano izašli iz ciklusa vremena, možete upotrijebiti ovakvu izjavu:

[count count = 1 done = 0 dok [$ count -le 9] echo "$ count" sleep 1 ((count ++)) ako [$ count == 5]

Izjavu o prekidu preskače izvršenje programa do kraja, a petlje i izvršava bilo koje izjave koje slijede. U ovom slučaju, izjava "Odjava je dovršena".

Izjava za nastavak, s druge strane, preskače samo ostatak izvješća trenutne iteracije i skokovi izravno na sljedeću iteraciju:

count = 1 done = 0 dok [$ count -le 9] spava 1 ((count ++)) ako [$ count == 5] zatim nastavlja fi echo "$ count"

U tom se slučaju izjava "continue" izvodi kada varijabla "broj" dosegne 5. To znači da sljedeća izjava (echo "$ count") nije izvršena na ovoj iteraciji (kada je vrijednost "count" 5).