Kunyora Kwaungaita Bash WHILE-Loops

Mirairo, Syntax, uye Mienzaniso

Iwe unogona kurongedza kuenzanisa kwemirairo kuburikidza nekuainyorera mune imwe script faira ndokuzoitanga.

Imwe faira yechirungu inongova text file, kazhinji neyo .SH file extension, iyo inosanganisira kuenderana kwemirayiridzo iyo inogonawo kuitwa kubva kumurairo wemirairo ( shell ).

Kunyange zvazvo Ropa Ruchienzanisira

Pasi pane muenzaniso wekanguva kaduku. Kana yapera, iyi script faira ichadhinda nhamba 1 kusvika ku9 pane skrini. Iyo nguva-zvinyorwa zvinokupa humwe hunochinja huripo hwekutsanangura kuguma kwemamiriro kudarika ye-loop .

#! / bin / bash count = 1 apo [$ count-9] echo "$ count" kurara 1 ((count ++)) yakaitwa

Semuenzaniso, unogona kuita script yapfuura isingaverengeki nekusiya chirevo chekuwedzera "((count ++))":

#! / bin / bash count = 1 apo [$ count-9] echo "$ count" kurara 1 kwakaitwa

Izwi re "kurara 1" rinomira kupererwa kwechikamu chekutanga pane imwe neimwe inotora. Shandisa nzira yeCtrl + C yekodhibhodi yegodhi kuti usiye.

Iwe unogonawo kuumba unopedzisira usingaoneki nokuisa colon sechiitiko:

#! / bin / bash count = 1 panguva: echo "$ count" kurara 1 ((count ++)) yakaitwa

Kuti ushandise mitemo yakawanda munguva iyo--loop, unofanirwa kushandisa kaviri kabheji bhizinesi:

count = 1 done = 0 apo [[$ count -le 9] && [$ done == 0]] echo "$ count" kurara 1 ((count ++)) kana [$ count == 5]; ipapo $ zvakaitwa = 1 yakaitwa

Muchirevo ichi, shanduro inoitwa "yakaitwa" inotanga ku 0 uye inogadzirirwa kusvika 1 apo nhamba inosvika kusvika 5. Mamiriro ekutora anotaura kuti iyo nguva inenge ichienderera mberi chero bedzi "kuverenga" iri pasi pemapfumbamwe uye "yakaitwa" yakaenzana to zero. Saka zvishongo zvinopera apo nhamba yacho yakaenzana ne5.

Izwi rokuti "&&" rinoreva zvinonzwisisika "uye" uye "||" zvinoreva zvinonzwisisika "kana".

Chimwe chinyorwa chezvibatanidzi "uye" uye "kana" mumamiriro ezvinhu "-a" uye "-o" ane bhokisi rimwe chete mabheji. Chimiro chiri pamusoro apa:

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

... inogona kunyorwazve se:

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

Kuverenga rugwaro faira rinowanzoitwa nechinguva chiduku. Mumuenzaniso unotevera, bash script inoratidzira zviri mukati mutsara nemutsara wefaira inonzi "inventory.txt:"

FILE = kuverenga.txt exec 6

Mutsara wokutanga unopa mazita ekufaira mazita ku "FILE" kushanduka. Mutsara wechipiri unochengetedza "kuiswa kwemazuva ose" mufaira rinotsanangura "6" (inogona kuva chero kukosha pakati pe3 ne9). Izvi zvakaitwa kuitira kuti "muongorori wepamusoro" unogona kudzorerwa kune faira zvinotsanangura "0" pakuguma kwe script (ona mashoko okuti "exec 0 Mu 3rd line fomu yekupinza inopiwa kudhinda firipi" 0, "inoshandiswa kuti muve nemuongorori wenyaya. "Chiverengero" chinyorwa chinoverenga mutsara kubva pane faira pane imwe neimwe inotora uye ichipa iyo ku "line1" inowanikwa.

Kuti usati wabuda nguva pfupi, unogona kushandisa chirevo chekugumisa sechinhu ichi:

nhamba = 1 yakaitwa = 0 apo [$ count -le 9] taura "$ count" kurara 1 ((count ++)) kana [$ count == 5] uye kuputsa fomu yakagadzirwa yapera

Mutemo wekuputsa skips chirongwa chekupedzisira kusvika pakupedzisira panguva yekutsemura uye kuita chero zvinyorwa zvinotevera. Muchiitiko ichi, chirevo che "echo chakapedzwa."

Iyo inopfuurira chirevo, kune rumwe rutivi, inoputika chete nguva yose yechirungu chechirevo chekutengesa kwemazuva ano uye inokwira zvakananga kune iri kutevedzana inotevera:

nhamba = 1 yakaitwa = 0 apo [$ count -le 9] itai kurara 1 ((count ++)) kana [$ count == 5] ipapo ramba uchiverenga "$ count" yakagadzirwa echo Yakapedzwa

Muchiitiko ichi, izwi rokuti "rambai" rinoshandiswa apo zvinoshandurwa kuti "kuverenga" zvinosvika 5. Izvi zvinoreva chirevo chinotevera (echo "$ count") haisi kuitika pane iyi iteration (kana kukosha kwe "kuverenga" kuri 5).