Kuidas kirjutada Bash WHILE-Loops

Käsud, süntaks ja näited

Võite käskude jada käivitada, kirjutades need skriptifaili ja käivitades seejärel selle.

Skriptifail on lihtsalt tekstifail, tavaliselt faililaiendiga .SH, mis sisaldab juhiseid, mida ka käsurealt ( shell ) käivitada saab.

Kuigi loop näited

Allpool on näide ajalt silmusest. Kui see täidetakse, prindib skriptifail ekraanil numbreid 1 kuni 9. Ajakirje annab sulle suurema paindlikkuse, kui täpsustada lõpetamise tingimust kui for-loop .

#! / bin / bash count = 1, samas kui [$ count -le 9] echo "$ count" sleep 1 ((count ++)) done

Näiteks võite teha eelmise skripti lõputu silmuse, jättes järjestuse avalduse "((count ++))":

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

"Uni 1" avaldus peatab iga iteratsiooni jaoks 1 sekundi täitmise. Protsessi lõpetamiseks kasutage kiirklahvi Ctrl + C.

Võite luua lõpmatu silmuse, pannes käärsoole tingimuseks:

#! / bin / bash count = 1, samas: do echo "$ count" sleep 1 ((count ++)) done

Selleks, et kasutada kella tingimusi ahelas, peate kasutama kahekordset nurksümboli märkust:

count = 1 done = 0, samas kui [[$ count-le 9] && [$ done == 0]] echo "$ count" une 1 ((count ++)) kui [$ count == 5]; siis $ done = 1 fi done

Selles skriptis on muutuja "done" initsialiseeritud 0-le ja seatakse seejärel väärtusse 1, kui loendus ulatub 5. Loop tingimuses on märgitud, et samas loop jätkub niikaua, kui "count" on alla üheksa ja "done" on võrdne nullini. Seepärast väljuvad loendid, kui loend vastab 5-le.

"&&" tähendab loogilist "ja" ja "||" tähendab loogilist "või".

Konjunktuuride alternatiivne märge "ja" ja "või" on tingimustes "-a" ja "-o" ühe nurksulgudes. Eespool toodud tingimus:

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

... võiks kirjutada järgmiselt:

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

Tekstifaili lugemine toimub tüüpiliselt silma ajal. Järgmises näites basskirsk loeb sisu rida faili rida, mida nimetatakse "inventory.txt:"

FILE = inventory.txt exec 6

Esimene rida määrab muutuja FILE sisendfaili nime. Teine liin salvestab faili deskriptoris "6" standardse sisendi (see võib olla mis tahes väärtus vahemikus 3 kuni 9). Seda tehakse nii, et "standardset sisendit" saab taastada skripti lõpus failide kirjeldamiseks "0" (vt avaldust "exec 0" 3. reas sisendfail on määratud failide kirjeldajale "0", mida kasutatakse standardse sisestuse jaoks. Loetud avaldus loeb seejärel iga joonise faili rida ja määrab selle muutuja "line1".

Aeg-ahela ennetähtaegselt väljumiseks võite kasutada break-avaldust järgmiselt:

count = 1 done = 0, samas kui [$ count -le 9] echo "$ count" sleep 1 ((count ++)), kui [$ count == 5] siis katkestatakse echo Finished

Lõpetaja avaldus ei luba programmi täitmisel lõppu, kui loop, ja käivitab selle järel kõik avaldused. Sel juhul avaldus "echo Finished."

Teisest küljest jätab jätkamisteade vahele praeguse iteratsiooni ainult ülejäänud loopi avalduse ja hüppab otse järgmisele iteratsioonile:

count = 1 done = 0, samal ajal kui [$ count -le 9] unelib 1 ((loend ++)), kui [$ count == 5] jätkatakse, siis jätkatakse salvestamist "$ count" done echo Finished

Sellisel juhul käivitatakse "continue" avaldus, kui muutuja "count" ulatub 5-ni. See tähendab, et järgmine kord (seda echo "$ count") ei täideta selles iteratsioonis (kui "count" väärtus on 5).