Programmeerimisel või skriptimisel on silmus üks kõige põhilisemaid ja võimsamaid mõisteid. Silmus täidab teatud ülesandeid, kuni määratud tingimused on täidetud. Igal programmeerimis- või skriptikeelel on kontseptsiooni rakendamiseks erinevad viisid.
Vaadake selles juhendis pesastatud silmust bashi skriptides.
Pesastatud silmus
Silmus täidab definitsiooni kohaselt teatud ülesandeid, kuni tingimused on täidetud. Mis siis, kui ülesanne hõlmab tsükli käivitamist? See on sisestatud silmuse mõiste. Silmus silmuses.
See on silmuse põhistruktuur.
while (tingimus)# midagi
Siin jätkab while-tsükkel plokis deklareeritud ülesannete täitmist seni, kuni tingimus on täidetud. Pesastatud silmuse korral näeks struktuur välja selline.
# peamine silmuswhile (tingimus)
# pesastatud silmus
while (tingimus)
# midagi
Teoreetiliselt võivad pesastatud silmused minna lõpmatuseni. Paljudes olukordades võivad pesastatud silmused olla ideaalne lahendus.
Silmus bashi skriptis
Bash on võimas skriptikeel. Bashis on erinevad silmusstruktuurid. Kõige populaarsemad on mõeldud silmustele, kuni ja kuni. Kui olete C / C ++ programmeerimisega varem tuttav, siis näeb süntaks kindlasti üsna sarnane välja.
Silmuste jaoks
Sest silmus on üks levinumaid ja mitmekülgsemaid vormiväljundeid jne. Tsüklite struktuur bashi skriptimisel. Struktuur sarnaneb silmuse jaoks ka C / C ++ palju.
Silmuse struktuur bashis on järgmine.
for ((lähtestama; tingimus; juurdekasv)); tegema# midagi
tehtud
Struktuur on väga iseenesestmõistetav. Initsialiseerimine pole kohustuslik. Tingimus ja juurdekasv on siiski prioriteetsemad.
Paneme selle teoks. Siin on väga lihtsustatud bash-skript, mis rakendab loopi jaoks.
jaoks ((i = 0; i < 5 ; i++)); dokaja "tere maailm"
tehtud
Tsükli tingimusena on võimalik kasutada ka loendit / vahemikku. See on eriti kasulik, kui töötate failide loendi, numbrivahemike, massiivide, käskude väljundite jne abil. Struktuur näeb välja umbes selline.
üksuse jaoks- ; tegema
- Bash lõpmatu silmus
- Bash-skripti kasutaja sisend
- Bashi funktsioon tagastab massiivi
# midagi
tehtud
Näiteks prindib järgmine skript viis korda tere maailma.
i jaoks ajavahemikus 1… 5; tegemakaja "tere maailm"
tehtud
Mis siis, kui peame töötama kataloogi sisuga? Järgmises näites prindib skript kõik kataloogis / usr / bin olevad failid.
i jaoks / usr / bin / *; tegemakaja $ i
tehtud
Mida me siis teeme, et silmus oleks pesastatud? See on lihtsalt üks silmus teise sees. Siin on eelmise näite abil sisestatud silmuse jaoks.
for ((i = 0; i < 3 ; i++)); dojaoks ((j = 0; j < 2 ; j++)); do
kaja "tere maailm"
tehtud
tehtud
Väljundiks on “tere maailm” 6 korda. Välimine silmus kulgeb kolm korda, sisemine silmus kulgeb kaks korda.
Kuigi silmuseid
While-silmus on veel üks populaarne ja intuitiivne silmus, mis on saadaval bashi skriptides. Süntaks näeb välja selline.
samas# midagi
tehtud
Järgmises näites prindib skript viis korda tere maailma.
arv = 1samal ajal [$ num -le 5]; tegema
kaja "tere maailm"
num = $ (($ num + 1))
tehtud
Kuidas näeks välja pesastatud samal ajal silmus? Siin on lihtne näide.
arv_a = 1arv_b = 1
samas [$ num_a -le 5]; tegema
samas [$ num_b -le 5]; tegema
kaja "tere maailm"
num_b = $ (($ num_b + 1))
tehtud
num_a = $ (($ num_a + 1))
tehtud
Kuni silmusteni
Kui teil on programmeerimise taust C / C ++ keeles, siis olete tuttav do-while tsükliga. Kahjuks pole bashil midagi sellist. Kuid seni, kuni silmus töötab sarnaselt. Ka süntaks näeb üsna sama välja.
kuni [# midagi
tehtud
Katsetingimuseks on hetk ja silmuse vahe. Niikaua kui testitingimus on tõene, töötab mõnda aega silmus. Kuni-silmus töötab aga ainult siis, kui tingimus on vale.
Siin on kiire näide while-silmusest. See prindib korrutustabeli 2.
num_a = 1kuni [$ num_a -gt 10]; tegema
kaja $ (($ num_a * 2))
num_a = $ (($ num_a + 1))
tehtud
Silmamurd
Teatud olukordades, kui teatud tingimused on täidetud, muutub ülejäänud tsükli käitamine üleliigseks. Loop-katkestused on huvitav funktsioon, mis võimaldab antud tingimusel silmusest välja murda. Pesastatud silmuste jaoks on see olulisem, kuna mida suurem on tsüklid, seda suurem on ressursside tarbimine ja ebaefektiivsus.
Siin peatatakse tsükli alljärgneva täitmine kohe, kui see on tingimuse saavutanud.
jaoks ((i = 1; i<=100;i++)); dokaja $ i
kui [$ i-ekv 10]; siis
murda
fi
tehtud
Vaadake, kuidas silmus katkestada, et põhjalikult selgitada ja tutvuda silmuse katkestustega.
Lõpumõtted
Pesastatud silmus on lihtne ja võimas mõiste, mida mõista ja rakendada. Loodetavasti suutis see juhend seda kontseptsiooni kirjeldada ja demonstreerida.
Huvitatud rohkematest bash-i skriptimisjuhenditest? Vaadake järgmisi juhendeid.
Head arvutamist!