Jinsi ya Kuandika Bash WHILE-Loops

Maagizo, Syntax, na Mifano

Unaweza kutekeleza mlolongo wa amri kwa kuandika kwenye faili ya script na kisha kuikimbia.

Faili ya script ni faili ya maandishi, kwa kawaida na ugani wa faili ya .SH, ambayo ina mlolongo wa maagizo ambayo yanaweza pia kutekelezwa kutoka kwenye mstari wa amri ( shell ).

Wakati Mfano wa Loop

Chini ni mfano wa kitanzi kidogo. Baada ya kunyongwa, faili hii ya script itachukua namba 1 hadi 9 kwenye skrini. Taarifa-wakati inakupa kubadilika zaidi kwa kutaja hali ya kukomesha kuliko kitanzi .

#! / bin / hesabu ya bash = 1 wakati [$ count-9] ondoka "$ count" usingizi wa 1 ((kuhesabu + +)) kufanyika

Kwa mfano, unaweza kufanya script ya awali kuwa kitanzi usio na ukomo kwa kufuta taarifa ya ziada "((kuhesabu + +))":

#! / bin / hesabu ya bash = 1 wakati [$ count -le 9] onyesha usingizi wa "$ count" uliofanywa 1

Taarifa "usingizi wa 1" inaruhusu utekelezaji kwa sekunde 1 kwa kila iteration. Tumia njia ya mkato ya Ctrl + C ili kusitisha mchakato.

Unaweza pia kujenga kitanzi usio na mwisho kwa kuweka coloni kama hali:

#! / bin / bash count = 1 wakati: fanya "$ count" usingizi wa 1 ((kuhesabu + +)) kufanyika

Ili utumie hali nyingi wakati wa kitanzi, unatakiwa utumie mshikisho wa bracket mara mbili:

kuhesabu = 1 kufanyika = 0 wakati [[$ count -le 9] && [$ kufanyika == 0]] fanya "$ count" usingizi 1 ((hesabu ++) ikiwa [$ count == 5]; basi $ kufanyika = 1 imefanywa

Katika script hii, variable "kufanyika" imeanzishwa hadi 0 na kisha kuweka 1 wakati hesabu kufikia 5. hali ya kitanzi inasema kwamba muda kitanzi itaendelea kama "hesabu" ni chini ya tisa na "kufanyika" ni sawa hadi sifuri. Kwa hivyo matanzi yanaondoka wakati hesabu inalingana na 5.

"&&" ina maana mantiki "na" na "|" ina maana mantiki "au".

Uthibitisho mbadala kwa viunganisho "na" na "au" katika hali ni "-a" na "-o" na mabaki ya mraba moja. Hali hapo juu:

[[$ count-9] && [$ kufanyika == 0]]

... inaweza kuandikwa tena kama:

[$ count-9] -a [$ kufanyika == 0]

Kusoma faili ya maandishi ni kawaida kufanyika kwa kitanzi kidogo. Katika mfano wafuatayo, script ya bash inasoma mstari wa maudhui kwa mstari wa faili inayoitwa "hesabu.txt:"

FILE = hesabu.txt exec 6

Mstari wa kwanza hutoa jina la faili ya pembejeo kwenye variable "FILE". Mstari wa pili huhifadhi "pembejeo ya kawaida" katika maelezo ya faili "6" (inaweza kuwa na thamani yoyote kati ya 3 na 9). Hii imefanywa ili "pembejeo ya kawaida" inaweza kurejeshwa kwenye maelezo ya faili "0" mwishoni mwa script (angalia neno "exec 0 Katika mstari wa 3 faili ya pembejeo imetolewa kwa maelezo ya faili" 0, "ambayo hutumiwa kwa pembejeo ya kawaida. Maneno ya "kusoma" kisha inasoma mstari kutoka kwenye faili kwenye kila iteration na kuiweka kwa variable "line1".

Ili uondoe mapema wakati wa kitanzi, unaweza kutumia kauli ya mapumziko kama hii:

kuhesabu = 1 kufanyika = 0 wakati [$ count -le 9] onyesho "usingizi wa $" usingizi 1 ((kuhesabu + +)) ikiwa [$ count == 5] kisha uvunja echo iliyofanywa Imekamilishwa

Taarifa ya mapumziko ya skipping utekelezaji wa mpango hadi mwisho wakati kitanzi na kutekeleza taarifa yoyote kufuatia. Katika kesi hii, taarifa "echo imekamilika."

Taarifa inayoendelea, kwa upande mwingine, inaruka tu wakati mwingine wa kitanzi wakati wa iteration ya sasa na inaruka kwa moja kwa moja kwa iteration ijayo:

kuhesabu = 1 kufanyika = 0 wakati [$ count-9] usingizi 1 ((kuhesabu + +)) ikiwa [$ count == 5] kisha uendelee kufikia "$ count" imekamilika

Katika kesi hiyo, kauli ya "kuendelea" inatekelezwa wakati "kuhesabu" kwa kawaida kunafikia 5. Hii inamaanisha kauli inayofuata (echo "$ count") haifanyikiwa juu ya iteration hii (wakati thamani ya "kuhesabu" ni 5).