Jinsi ya Kuandika BASH "kwa" Loop

Jinsi ya kutumia BASH "kwa" kitanzi katika scripts za shell

BASH (ambayo inasimama kwa Bourne Again Shell) ni lugha ya script inayotumiwa na mifumo ya uendeshaji zaidi ya Linux na UNIX.

Unaweza kukimbia amri za BASH ndani ya dirisha la terminal baada ya nyingine au unaweza kuongeza amri kwenye faili ya maandishi ili kuzalisha script ya shell.

Jambo kuu juu ya kuandika scripts za shell ni kwamba unaweza kuwaendesha tena na tena. Kwa mfano fikiria unahitaji kuongeza mtumiaji kwenye mfumo, weka ruhusa zao na udhibiti mazingira yao ya kuanzia. Unaweza kuandika amri kwenye kipande cha karatasi na kuwatumia unapoongeza watumiaji wapya au unaweza kuandika script moja na kupitisha vigezo kwenye script hiyo.

Lugha za script kama vile BASH zinajenga programu za programu kama lugha zingine. Kwa mfano, unaweza kutumia vigezo vya kuagiza ili kupata pembejeo kutoka kwenye kibodi na uvihifadhi kama vigezo. Unaweza kisha kupata script kufanya hatua fulani kulingana na thamani ya vigezo vya pembejeo .

Sehemu muhimu ya lugha yoyote na programu ya script ni uwezo wa kukimbia kipande hiki cha kificho mara kwa mara.

Kuna njia kadhaa za kurudia kificho (pia inajulikana kama vitanzi). Katika mwongozo huu, utaonyeshwa jinsi ya kuandika "kwa" kitanzi.

A kwa kitanzi kurudia sehemu fulani ya kanuni mara kwa mara. Wao ni muhimu ili mfululizo wa amri inaweza kuendelea kukimbia mpaka hali fulani inakabiliwa, baada ya hapo watasimama.

Katika mwongozo huu, utaonyeshwa njia tano za kutumia kitanzi ndani ya script ya BASH.

Kabla ya kuanza

Kabla ya kuanza na mifano ya kitanzi, unahitaji kufungua dirisha la terminal na ufuate hatua hizi:

  1. Ingiza scripts mkdir ( jifunze zaidi kuhusu mkdir hapa )
  2. Ingiza scripts za cd (hii inabadilika saraka kwa maandiko )
  3. Ingiza nano examplen.sh (ambapo n ni mfano unayofanya kazi)
  4. Ingiza script
  5. Bonyeza CTRL + O kuokoa na CTRL + X ili uondoke
  6. Run bash examplen.sh (tena, kwa kuwa mfano unaofanya nao)

Jinsi ya Kupoteza Kwa Orodha

#! / bin / bash
kwa idadi katika 1 2 3 4 5
fanya
Echo $ nambari
kufanyika
Toka 0

Njia ya BASH ya kutumia "kwa" vifungo ni tofauti kabisa na njia nyingi za programu na scripting lugha kushughulikia "kwa" loops. Hebu kuvunja script chini ...

Katika BASH "kwa" kitanzi vyote, kauli kati ya kufanya na kufanywa hufanyika mara moja kwa kila kitu katika orodha.

Katika mfano hapo juu, orodha ni kila kitu kinachoja baada ya neno ndani (yaani 1 2 3 4 5).

Kila wakati kitanzi kinapiga, thamani ya pili katika orodha imeingizwa kwenye variable iliyowekwa baada ya neno "kwa" . Katika kitanzi hapo juu, variable huitwa namba .

Maneno ya echo hutumiwa kuonyeshwa habari kwenye skrini.

Kwa hiyo, mfano huu unachukua idadi 1 hadi 5 na hutoa matokeo yao kwa moja kwa skrini:

Jinsi ya Kuweka Kati ya Kuanza na Mwisho Point

Tatizo na mfano hapo juu ni kwamba kama unataka kuondokana na orodha kubwa (sema 1 hadi 500), itachukua miaka kuandika namba zote mahali pa kwanza.

Hii inatuleta kwenye mfano wa pili unaonyesha jinsi ya kutaja hatua ya mwanzo na mwisho:

#! / bin / bash
kwa idadi katika {1..10}
fanya
Echo "nambari ya $"
kufanyika
Toka 0

Sheria hizi ni sawa. Maadili baada ya neno " ndani" huunda orodha ya kutafsiri na kila thamani katika orodha huwekwa katika variable (yaani namba), na kila wakati kitanzi kinapotana, kauli kati ya kufanya na kufanywa hufanyika.

Tofauti kuu ni jinsi orodha inavyoundwa. Mabako ya curly {} kimsingi inaashiria tofauti, na upeo, katika kesi hii, ni 1 hadi 10 (dots mbili zinatofautiana mwanzo na mwisho wa aina mbalimbali).

Kwa mfano, mfano huu unaendesha kila namba kati ya 1 na 10 na matokeo ya namba hadi skrini ifuatavyo:

Kitanzi kimoja kinaweza kuandikwa kama hii, kwa syntax inayofanana na mfano wa kwanza:

kwa idadi katika 1 2 3 4 5 6 7 8 9 10

Jinsi ya Kuondoka Hesabu kwa Muda

Mfano uliopita ulionyesha jinsi ya kuzunguka kati ya mwanzo na mwisho, kwa hivyo sasa tutaangalia jinsi ya kuruka namba katika upeo.

Fikiria unataka kitanzi kati ya 0 na 100 lakini tu kuonyesha kila nambari kumi. Sura iliyofuata inaonyesha jinsi ya kufanya hivi tu:

#! / bin / bash
kwa idadi katika {0..100..10}
fanya
Echo "nambari ya $"
kufanyika
Toka 0

Sheria hizi ni sawa. Kuna orodha, variable, na seti ya kauli zinazofanyika kati ya kufanya na kufanywa . Orodha hii wakati huu inaonekana kama hii: {0..100..10}.

Nambari ya kwanza ni 0 na idadi ya mwisho ni 100. Nambari ya tatu (10) ni idadi ya vitu katika orodha ambayo itapungua.

Kwa mfano mfano huo, unaonyesha pato zifuatazo:

Zaidi ya jadi ya kuangalia kwa kitanzi

BASH njia ya kuandika kwa loops ni ajabu kidogo ikilinganishwa na lugha nyingine za programu.

Unaweza, hata hivyo, kuandika kitanzi kwa mtindo sawa na lugha ya C ya programu, kama hii:

#! / bin / bash
kwa ((nambari = 1; namba <100; nambari ++))
{
ikiwa (($ namba% 5 == 0))
basi
echo "namba ya $ ni kugawa kwa 5"
fi
}
Toka 0

Kitanzi huanza kwa kuweka idadi ya kutosha hadi 1 (namba = 1 ). Kitanzi kitaendelea kutafsiri wakati thamani ya idadi ni chini ya 100 ( nambari <100 ). Thamani ya idadi ya mabadiliko kwa kuongeza 1 baada ya kila iteration ( namba ++ ).

Kila kitu kati ya braces curly hufanyika kwa kila kitanzi cha kitanzi.

Kidogo kati ya braces huntafuta thamani ya namba , huitenganisha na 5, na inalinganisha salio hadi 0. Ikiwa salio ni 0 basi namba imevunjwa na 5 na kisha itaonyeshwa kwenye skrini.

Kwa mfano:

Ikiwa unataka kubadilisha ukubwa wa hatua ya iteration unaweza kurekebisha sehemu ya namba ++ kuwa idadi = nambari + 2 , nambari = nambari + 5 , au nambari = namba + 10 nk.

Hii inaweza kupunguzwa kwa idadi + = 2 au namba + = 5 .

Mfano wa Vitendo

Kwa vitanzi vinaweza kufanya zaidi ya orodha ya nambari ya iterate. Unaweza kweli kutumia pato la amri nyingine kama orodha.

Mfano wafuatayo unaonyesha jinsi ya kubadili faili za sauti kutoka MP3 hadi WAV :

#! / bin / bash

Orodha katika mfano huu ni kila faili yenye ugani wa .MP3 katika folda ya sasa na variable ni faili .

Amri ya mpg inabadilisha faili ya MP3 kwenye WAV. Hata hivyo, labda unahitaji kufunga hii kwa kutumia meneja wako wa mfuko kwanza.