Indlela Yokubhala Bash WHILE-Loops

Imiyalo, i-Syntax, nezibonelo

Ungasebenzisa ukulandelana kwemilayezo ngokuwabhalela kufayili yombhalo bese uyisebenzisa.

Ifayela leskripthi liyisifayili sombhalo, ngokuvamile ngesandiso sefayela le-.SH, equkethe ukulandelana kwemilayezo engabuye yenziwe kusukela kumugqa wokulawula ( igobolondo ).

Ngesikhathi Izibonelo Ze-Loop

Ngezansi yisibonelo se-loop esincane. Uma kukhishwa, leli fayela lombhalo uzophrinta izinombolo 1 kuya ku-9 esibukweni. Isitatimende esithile sinikeza ukuguquguquka okungaphezulu kokucacisa isimo sokuqeda ukudlula i -loop-loop .

#! / bin / bash count = 1 ngenkathi [$ count -le 9] beka "$ count" ukulala 1 ((count ++)) kwenziwe

Isibonelo, ungenza iskriphthi sangaphambilini sibe i-loop engapheli ngokushiya isitatimende esikhulisiwe "((count ++))":

#! / bin / bash count = 1 ngenkathi [$ count -le 9] beka ukulala okungu- "$ count" 1 okwenziwe

Isitatimende "sokulala 1" simisa ukukhishwa kwesigamu esingu-1 ku-iteration ngayinye. Sebenzisa isinqamuleli sekhibhodi ye -Ctrl + C ukuqeda inqubo.

Ungakha futhi i-loop engapheli ngokubeka ikholoni njengesimo:

#! / bin / bash count = 1 ngenkathi: yenza ukulala "$ count" ukulala 1 ((count ++)) okwenziwe

Ukuze usebenzise izimo eziningi ngesikhathi sokuhamba kwesikhathi, kufanele usebenzise isaziso sokukhishwa kwesibhakabhaka esiphindwe kabili:

inani = 1 kwenziwe = 0 ngenkathi [[$ count -le 9] && [$ done == 0]] beka u-"count count" ((count ++)) uma [$ count == 5]; bese kwenziwa i-$ = 1 efeziwe

Kule script, ukuguquguquka "okwenziwayo" kuqaliswa ku-0 bese kusethwe ku-1 lapho inani lifinyelela ku-5. Isimo se-loop sithi i-loop ngenkathi izoqhubeka uma nje "ubala" ingaphansi kweyisishiyagalolunye futhi "kwenziwa" kulingana kuya ku-zero. Ngakho-ke izikhiya ziphuma uma inani lilingana no-5.

I "&&" isho enengqondo "futhi" futhi "||" kusho okuqondakalayo "noma".

Okunye okukwenziwe ngezihlanganisi "futhi" futhi "noma" ezimweni "" -a "futhi" -o "nabakaki abesikwele abodwa. Isimo esingenhla:

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

... ingabhalwa kabusha njenge:

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

Ukufunda ifayela lombhalo ngokuvamile kwenziwa nge-loop esesikhashana. Esikhathini esilandelayo, iskripthi sebhashi sifunda umugqa wokuqukethwe ngomugqa wefayela elibizwa ngokuthi "yokusungula.txt:"

FILE = yokusungula.txt exec 6

Umugqa wokuqala unikeza igama lefayili lokufakwayo kuguquguquko "FILE". Umugqa wesibili usindisa "ukufaka okujwayelekile" kufolda yefayela "6" (kungaba yinani eliphakathi kuka-3 no-9). Lokhu kwenziwa ukuze "ukufaka okujwayelekile" kungabuyiselwa kwisichazamazwi sefayela "0" ekupheleni kweskripthi (bheka isitatimende "senze 0 Esigabeni sesithathu ifayela lokufaka linikwe isichazamazwi sefayela" 0, "esisetshenzisiwe ukufaka okujwayelekile. Isitatimende "sokufunda" bese ufunda umugqa ovela efayeleni ku-iteration ngayinye bese uyabelana kuguquguquko "line1".

Ukuze ungakapheli isikhathi sokuphuma isikhashana, ungasebenzisa isitatimende sokuphumula kanje:

inani = 1 kwenziwe = 0 ngenkathi [$ count -le 9] beka ukulala "$ count" 1 ((count ++)) uma [$ count == 5] bese uphula i-echo ephelele ephelile

Isitatimende sekhefu siphumelela uhlelo lokusebenza ekugcineni ngenkathi i-loop iphinda ikhiphe noma yiziphi izitatimende ezilandelayo. Kulesi simo, isitatimende esithi "i-echo iphelile."

Isitatimende esiqhubekayo, ngakolunye uhlangothi, siphumula kuphela lonke isitatimende se-loop sesikhathi sokushayelwa kwamanje futhi siphumela ngqo ku-iteration elandelayo:

inani = 1 kwenziwe = 0 ngenkathi [$ count -le 9] ulala 1 ((count ++)) uma [$ count == 5] bese uqhubeka u-"$ count" echo eyenziwe iphelile

Kulesi simo, isitatimende esithi "qhubeka" senziwa uma isichazamazwi esithi "count" sifinyelela 5. Lokhu kusho ukuthi isitatimende esilandelayo (echo "$ count") asikwenziwa ngalokhu kuhlolwa (uma inani "lokubala" liyi-5).