Kadangi BASH yra komandinės eilutės kalba, mes gauname daug funkcijų, kad galėtume panaudoti programavimo įgūdžius atliekant užduotis terminale. BASH scenarijuose galime naudoti kilpas ir sąlyginius sakinius, kad paprastu programiniu būdu atliktume kai kurias pasikartojančias ir sudėtingas problemas. Šiame straipsnyje mes sutelksime dėmesį į už kilpą BASH scenarijuose.
Atsižvelgiant į naudojimo atvejį ir problemą, kurią bandoma automatizuoti, yra keletas būdų, kaip naudoti kilpas.
- Paprasta kilpa
- Diapazonas pagrįstas ciklas
- Masyvo iteracija kilpoms
- C stiliaus kilpoms
- Begalinis ciklas
Paprasta kilpa
Norėdami vykdyti for kilpą, galime parašyti tokią sintaksę:
#!/bin/bash for n in a b c; do echo $n done>
- Pirmoje iteracijoje
n>paima reikšmę a, o scenarijus išspausdina a. - Antroje iteracijoje
n>paima reikšmę b, o scenarijus išspausdina b. - Trečioje iteracijoje
n>įgauna reikšmę c, o scenarijus išspausdina c.

Pirmiau pateikta komanda pakartos nurodytus elementus po in raktažodis po vieną. Elementai gali būti skaičiai, eilutės arba kitos duomenų formos.
Diapazonas pagrįstas ciklas
Kilpoms galime naudoti diapazoną. Šio tipo cikle galime nurodyti skaičių, kuris pradedamas, baigiamas ir didinamas kiekvienoje iteracijoje (neprivaloma) sakinyje. Tai galite padaryti dviem būdais, t. y. paminėdami padidinimo / mažinimo reikšmę ir padidindami vienu pagal numatytuosius nustatymus. Sintaksė atrodo taip:
#!/bin/bash for n in {1..5}; do echo $n done> 
Aukščiau pateiktame kode naudojame {}, kad nurodytume skaičių diapazoną. Garbanotųjų skliaustų viduje nurodome pradžios tašką, po kurio yra du taškai ir galutinis taškas. Pagal numatytuosius nustatymus jis didėja vienu. Taigi spausdiname 5 skaičius nuo 1 iki 5 imtinai.
#!/bin/bash for n in {1..5..2}; do echo $n done> 
Čia matome, kad kilpa padidėjo 2 vienetais, kaip minėta garbanotuose petnešose. Taigi dirbti su skaičiais labai lengva ir patogu. Tai taip pat gali būti naudojama su abėcėlės simboliais.
PASTABA: Negalime naudoti kintamųjų riestiniuose skliaustuose, todėl turėsime koduoti reikšmes. Norėdami naudoti kintamuosius, kituose skyriuose matome tradicines C stiliaus kilpas.
Masyvo iteracija kilpoms
Mes galime patogiai kartoti masyvus bash, naudodami tam tikros sintaksės kilpas. Norėdami pasiekti visus masyvo elementus, galime naudoti specialius BASH kintamuosius, ty @. Pažiūrėkime į kodą:
#!/bin/bash s=('football' 'cricket' 'hockey') for n in ${s[@]}; do echo $n done> 
Mes galime kartoti masyvo elementus naudodami @ operatorių, kuris gauna visus masyvo elementus. Taigi, naudodami for kilpą, kartojame juos po vieną. Naudojame kintamąjį ${variable_name[@]}, kuriame riestiniai skliaustai išplečia kintamojo s reikšmę, kuri yra eilučių masyvas. Naudodami operatorių [@] pasiekiame visus elementus ir taip kartojame juos kilpoje. Čia, n yra iteratorius, todėl galime atspausdinti vertę arba atlikti reikiamą apdorojimą.
C stiliaus kilpoms
Kaip minėta anksčiau, norėdami pakartoti įvairius elementus, turime naudoti kintamuosius, esančius už kilpų. Taigi, C stiliaus kilpos vaidina labai svarbų vaidmenį. Pažiūrėkime, kaip juos naudojame.
#!/bin/bash n=7 for (( i=1 ; i<=$n ; i++ )); do echo $i done>

Kaip matome, galime dinamiškai naudoti galinių sąlygų diapazono reikšmę. Atminkite, kad tarpai tarp dvigubų skliaustų gali būti tyčiniai ir yra sintaksės dalis. C stiliaus kilpoms yra kilpos, turinčios 3 dalis, inicijavimo iteratorių, didinimo / mažinimo elementą ir pabaigos sąlygą.
Aukščiau pateiktoje sintaksėje inicijavome ciklo iteratorių / skaitiklį į 1, kuris gali būti bet koks, kaip priklauso nuo pasirinkimo. Antroji dalis yra pabaigos sąlyga, čia mes panaudojome kintamąjį n kuris inicijuojamas prieš for kilpą, todėl naudojame paprastą $ operatorių, kad gautumėte kintamojo reikšmę. Galiausiai turime inkrementatorių / dekrementerį, kuris pakeičia iteratorių / skaitiklį į reikšmę, kuri gali būti bet kokia, bet pavyzdyje mes naudojome vienkartinį operatorių (++) padidinti reikšmę viena, kuri yra lygiavertė i=i+1 . Taigi galime naudoti tokius teiginius kaip i+=2, i–,++i, ir taip toliau.
Begalinis ciklas
Mes tai nenaudojame dažnai, bet kartais naudinga, kad tam tikri dalykai veiktų. Sintaksė yra gana paprasta ir panaši į C stiliaus kilpoms.
#!/bin/bash n=4 for (( ; ; )); do if [ $n -eq 9 ];then break fi echo $n ((n=n+1)) done>
Kilpa prasideda nuon>nustatyta į 4. Jis didėjan>po 1 kiekvienoje iteracijoje ir atspausdina reikšmęn>ikin>tampa lygus 9. Kain>pasiekia 9,break>pareiškimas vykdomas, o ciklas baigiasi. Scenarijus sustoja atspausdinus skaičius nuo 4 iki 8.

Kaip matome, ciklas „for“ neturi sąlygų, o ši kilpa tęsiasi amžinai, tačiau turime sąlygų teiginį, kad patikrintume, ar jis nesitęs amžinai. Naudojame pertraukos sakinį if sakinyje, kad išeitume iš ciklo ir nustotume kartoti iteratorių. Naudojome inkrementorių, kad padidintume kintamąjį cikle, kitaip ciklas yra begalinis. Žinoma, mums reikia tam tikros logikos, kad ištrūktume iš ciklo, todėl turime naudoti sąlyginį sakinį if.