Kako napisati Bash WHILE-Loops

Komande, sintaksa i primeri

Možete izvršiti niz naredbi tako što ih upisujete u datoteku skripte i zatim pokrenete.

Skriptna datoteka je jednostavno tekstualna datoteka, obično sa ekstenzijom datoteke .SH, koja sadrži niz instrukcija koje se takođe mogu izvršiti iz komandne linije ( shell ).

Tokom Loop primera

Ispod je primer petlje. Kada se izvrši, ova datoteka skripta će odštampati brojeve od 1 do 9 na ekranu. Izjava "while-statement" vam daje više fleksibilnosti za preciziranje stanja prekida nego for-petlje .

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

Na primer, prethodnu skriptu možete napraviti beskonačnom petlju tako što ćete izostaviti izjavu o inkretiranju "((broj ++))":

#! / bin / bash count = 1 dok [$ count -le 9] echo "$ count" sleep 1 done

Izjava "sleep 1" pauzira izvršenje za 1 sekundu na svakoj iteraciji. Koristite prečicu tastera Ctrl + C da biste prekinuli proces.

Takođe možete kreirati beskonačnu petlju tako što ćete staviti debelo crevo kao uslov:

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

Da biste koristili više uslova u toku petlje, morate koristiti notu dvostrukog kvadrata:

count = 1 done = 0 dok [[$ count -le 9] && [$ done == 0]] echo "$ count" sleep 1 ((broj ++)) ako [$ count == 5]; onda je $ done = 1 završeno

U ovom scenariju, promenljiva "done" se inicijalizuje na 0, a zatim se postavi na 1 kada broj dostigne 5. Stanje petlje kaže da će petlja trajati dok se "brojanje" smanji na devet i "izvrši" jednako na nulu. Prema tome, petlje izlaze kada je broj jednak 5.

"&&" označava logičke "i" i "||" znači logičan "ili".

Alternativna notacija za konjunkciju "i" i "ili" u uslovima je "-a" i "-o" sa jednakim kvadratnim zagradama. Gore navedeno stanje:

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

... mogla bi biti prepisana kao:

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

Čitanje tekstualne datoteke obično se vrši uz pomoć petlje. U narednom primjeru, bash skripta čita liniju sadržaja linijom datoteke pod imenom "inventory.txt:"

FILE = inventory.txt exec 6

Prva linija dodeljuje ime ulazne datoteke promenljivici "FILE". Druga linija čuva "standardni ulaz" u opisu datoteke "6" (to može biti bilo koja vrijednost između 3 i 9). Ovo je učinjeno tako da se "standardni unos" može vratiti na deskriptor datoteke "0" na kraju skripte (pogledajte izraz "exec 0 U trećoj liniji ulazna datoteka se dodjeljuje descriptoru datoteke" 0 ", koji se koristi za standardni unos. Pročitaj "pročitaj" tada čita liniju iz fajla na svakoj iteraciji i dodeljuje je promenama "line1".

Da biste prerano izašli iz nekog vremena, možete koristiti ovakav prekid:

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

Izjava o prekidu preskoči izvršenje programa do kraja dok je petlja i izvršava sve naredbe koje slede. U ovom slučaju, izjava "echo Finished."

Izjava o nastavku, s druge strane, preskoči samo ostatak naredbe petlje trenutne iteracije i skok direktno na sledeću iteraciju:

count = 1 done = 0 dok [$ count -le 9] spavaj 1 ((broj ++)) ako [$ count == 5] nastavi f echo "$ count" done echo Finished

U ovom slučaju, nastavak "nastavi" se izvršava kada varijabla "broj" dostigne 5. Ovo znači da se naredna izjava (echo "$ count") ne izvršava na ovoj iteraciji (kada je vrednost "broj" 5).