Bawo ni lati Kọ Bash WHILE-Loops

Awọn Ilana, Atokọ, ati Awọn Apeere

O le ṣe pipaṣẹ awọn ofin nipa kikọ wọn sinu faili akosile ati lẹhinna nṣiṣẹ.

Fọọmu akosile jẹ faili faili nikan, nigbagbogbo pẹlu ilọsiwaju faili faili .SH, ti o ni awọn ọna itọnisọna ti a le ṣe paṣẹ lati laini aṣẹ ( ikarahun ).

Lakoko ti awọn apẹẹrẹ loop

Ni isalẹ jẹ apẹẹrẹ ti a nigba ti o lo. Nigbati a ba pa, faili yi yoo tẹ awọn nọmba 1 si 9 lori iboju. Ọrọ igbani-ọrọ naa fun ọ ni irọrun diẹ sii fun siseto ipo ifopinsi ju igbimọ -okun .

#! / bin / bash count = 1 lakoko ti [$ count-9] ṣe echo "$ count" oorun 1 ((count ++)) ṣe

Fun apere, o le ṣe iwe-akọọlẹ ti tẹlẹ lati jẹ ailopin ailopin nipasẹ omitting statement increment "((count ++))":

#! / bin / bash count = 1 lakoko ti [$ count-9] ṣe echo "$ count" oorun 1 ṣe

Ọrọ "sisun" 1 duro idaniloju fun 1 keji lori igbasilẹ kọọkan. Lo ọna abuja bọtini Ctrl + C lati fopin si ilana naa.

O tun le ṣẹda iṣakoso ailopin nipa fifi ọṣọ kan silẹ bi ipo:

#! / bin / bash count = 1 nigba ti: ṣe echo "$ count" orun 1 ((count ++)) ṣe

Ni ibere lati lo awọn ipo pupọ ni lakoko lakoko-lakoko, o ni lati lo awọn akọsilẹ akọmọ ami meji:

count = 1 done = 0 while [[$ count -le 9] && [$ done == 0]] ṣe akiyesi "$ count" oorun 1 ((count ++) ti o ba jẹ [$ count == 5]; lẹhinna $ ṣe = 1 fi ṣe

Ni iwe-akọọkọ yii, a ṣe iyipada si iyipada "ṣe" ni 0 ati lẹhinna ṣeto si 1 nigbati kika ba de 5. Imuba iṣuṣi sọ pe lakoko ti loop yoo tẹsiwaju bi igba ti "ka" jẹ kere ju mẹsan ati "ṣe" jẹ deede si odo. Nitorina awọn igbesẹ lo jade nigbati o ka iye 5.

Awọn "&&" tumo si igbonye "ati" ati "||" tumo si agbon "tabi".

Aṣayan iyasọtọ miiran fun awọn apapo "ati" ati "tabi" ni awọn ipo ni "-a" ati "-o" pẹlu awọn bọọketi square kan. Ipo ti o wa loke:

[[$ count-9] & & [$ ṣe == 0]]

... le ṣe atunkọ bi:

[$ count-9] -a [$ ṣe == 0]

Kika faili faili kan ni a ṣe pẹlu igba diẹ lakoko laasọ. Ni apẹẹrẹ ti o tẹle, akọọlẹ fifawe ka awọn ila akoonu naa nipasẹ ila ti faili ti a npe ni "inventory.txt:"

FILE = inventory.txt exec 6

Laini akọkọ fi aami orukọ faili wọle si iyipada "FILE". Laini keji fi "igbasilẹ boṣewa" ni oluṣakoso faili "6" (o le jẹ eyikeyi iye laarin 3 ati 9). Eyi ni a ṣe ki "igbasilẹ titẹsi" le ti wa ni pada si faili descriptor "0" ni opin ti iwe afọwọkọ naa (wo gbólóhùn "exec 0 Ni ila 3rd a fi ipin faili ti a fi silẹ lati ṣakoso awọn descriptor" 0, "eyi ti a lo fun igbasilẹ titẹsi "gbolohun" kika ki o si ka ila kan lati inu faili lori igbasilẹ kọọkan ki o si fi sii si iyọda "line1".

Ki o le jade kuro ni igbagbọ lakoko iṣọ-ọna, o le lo alaye fifọ gẹgẹ bi eyi:

count = 1 done = 0 while [$ count-9] ṣe iṣiro "$ count" oorun 1 ((count ++)) ti o ba ti [$ count == 5] lẹhinna fọ fi ṣe iṣiro pari

Alaye fifọ naa nfi ipaniyan ipaniyan si opin lakoko laabu ati ṣe awọn gbolohun kan lẹhin rẹ. Ni idi eyi, ọrọ yii "iwoyi ti pari."

Gbólóhùn ilọsiwaju, ni apa keji, foju nikan iyokù nigba ti alaye idasi ti aṣiṣe lọwọlọwọ ati ki o fo fo taara si iteji ti o tẹle:

count = 1 done = 0 while [$ count-9] ṣe oorun 1 ((count ++)) ti o ba [$ count == 5] ki o si tẹsiwaju "$ count" ṣe iwoyi pari

Ni idi eyi, ọrọ "tẹsiwaju" ni a ṣe nigba ti ayípadà "kaakiri" de ọdọ 5. Eleyi tumọ si gbólóhùn ti o tẹle (kodii "$ count") ko ṣe lori akoko yii (nigbati iye "kika" jẹ 5).