Tā kā BASH ir komandrindas valoda, mēs iegūstam diezgan funkciju bagātu pieredzi, lai izmantotu programmēšanas prasmes uzdevumu veikšanai terminālī. Mēs varam izmantot cilpas un nosacījumu paziņojumus BASH skriptos, lai vienkāršā programmatiskā veidā veiktu dažas atkārtotas un sarežģītas problēmas. Šajā rakstā mēs koncentrēsimies uz cilpai BASH skriptos.
Atkarībā no lietošanas gadījuma un problēmas, ko tā mēģina automatizēt, ir vairāki veidi, kā izmantot cilpas.
- Vienkārša cilpa
- Diapazons balstīts uz cilpu
- Masīvu iterācija cilpām
- C Styled cilpām
- Bezgalīgs cilpai
Vienkārša cilpa
Lai izpildītu for cilpu, mēs varam uzrakstīt šādu sintaksi:
#!/bin/bash for n in a b c; do echo $n done>
- Pirmajā atkārtojumā,
n>ņem vērtību a, un skripts izdrukā a. - Otrajā atkārtojumā,
n>ņem vērtību b, un skripts izdrukā b. - Trešajā atkārtojumā,
n>ņem vērtību c, un skripts izdrukā c.

Iepriekš minētā komanda atkārtos norādītos elementus pēc iekšā atslēgvārds pa vienam. Elementi var būt skaitļi, virknes vai cita veida dati.
Diapazons balstīts uz cilpu
Cilpām varam izmantot diapazonu. Šāda veida cilpā mēs varam norādīt skaitli, kas jāsāk, jāpārtrauc un jāpalielina katrā paziņojuma iterācijā (neobligāti). Ir divi veidi, kā to izdarīt, t.i., minot pieauguma/samazinātāja vērtību un pēc noklusējuma palielinot par vienu. Sintakse izskatās šādi:
#!/bin/bash for n in {1..5}; do echo $n done> 
Iepriekš minētajā kodā mēs izmantojam {}, lai norādītu skaitļu diapazonu. Cirtainajās iekavās mēs norādām sākuma punktu, kam seko divi punkti un beigu punkts. Pēc noklusējuma tas palielinās par vienu. Tādējādi mēs izdrukājam 5 ciparus no 1 līdz 5 ieskaitot.
#!/bin/bash for n in {1..5..2}; do echo $n done> 
Šeit mēs redzam, ka cilpa palielinājās par 2 vienībām, kā minēts cirtainajās lencēs. Tādējādi darbs ar cipariem ir ļoti vienkāršs un ērts. To var izmantot arī ar alfabētiskām rakstzīmēm.
PIEZĪME: Mēs nevaram izmantot mainīgos lielumus cirtainajās iekavās, tāpēc mums būs jākodē vērtības. Lai izmantotu mainīgos, nākamajās sadaļās mēs redzam tradicionālās C stila cilpas.
Pīta Deividsona vecums
Masīvu iterācija cilpām
Mēs varam ērti atkārtot masīvus bash, izmantojot cilpas ar noteiktu sintaksi. Mēs varam izmantot īpašos mainīgos BASH, ti, @, lai piekļūtu visiem masīva elementiem. Apskatīsim kodu:
#!/bin/bash s=('football' 'cricket' 'hockey') for n in ${s[@]}; do echo $n done> 
Mēs varam atkārtot masīva elementus, izmantojot operatoru @, kas iegūst visus masīva elementus. Tādējādi, izmantojot for cilpu, mēs atkārtojam tos pa vienam. Mēs izmantojam mainīgo ${mainīgā_nosaukums[@]}, kurā cirtainie iekavas šeit paplašina mainīgā s vērtību, kas ir virkņu masīvs. Izmantojot operatoru [@], mēs piekļūstam visiem elementiem un tādējādi atkārtojam tos for cilpā. Lūk, n ir iterators, tāpēc mēs varam izdrukāt vērtību vai veikt tajā nepieciešamo apstrādi.
C Styled cilpām
Kā minēts iepriekš, mums ir jāizmanto mainīgie, kas atrodas for cilpās, lai atkārtotu vairākus elementus. Tādējādi C-veida cilpām ir ļoti svarīga loma. Apskatīsim, kā mēs tos izmantojam.
#!/bin/bash n=7 for (( i=1 ; i<=$n ; i++ )); do echo $i done>

Kā redzam, mēs varam dinamiski izmantot beigu nosacījumu diapazona vērtību. Atcerieties, ka atstarpes starp dubultiekavām var būt apzinātas un ir daļa no sintakses. C stils cilpām ir cilpas, kurām ir 3 daļas, inicializācijas iterators, inkrementators/dekrementētājs un beigu nosacījums.
Iepriekš minētajā sintaksē mēs esam inicializējuši cilpas iteratoru/skaitītāju uz 1, kas var būt jebkas pēc izvēles. Otrā daļa ir beigu nosacījums, šeit mēs esam izmantojuši mainīgo n kas tiek inicializēts pirms for cilpas, un tāpēc mēs izmantojam vienkāršo $ operatoru, lai iegūtu mainīgā vērtību. Visbeidzot, mums ir palielinātājs/dekrementētājs, kas maina iteratoru/skaitītāju uz vērtību, kas var būt jebkas, bet piemērā mēs esam izmantojuši unāro operatoru. (++) lai palielinātu vērtību par vienu, kas ir līdzvērtīga i=i+1 . Tādējādi mēs varam izmantot tādus apgalvojumus kā i+=2, i–,++i, un tā tālāk, un tā tālāk.
Bezgalīgs cilpai
Mēs to neizmantojam bieži, bet dažreiz ir noderīgi, lai dažas lietas darbotos. Sintakse ir diezgan vienkārša un līdzīga C stila cilpām.
#!/bin/bash n=4 for (( ; ; )); do if [ $n -eq 9 ];then break fi echo $n ((n=n+1)) done>
Cilpa sākas arn>iestatīts uz 4. Tas palielināsn>pa 1 katrā iterācijā un izdrukā vērtībun>līdzn>kļūst vienāds ar 9. Kadn>sasniedz 9,break>paziņojums tiek izpildīts, un cilpa tiek pārtraukta. Skripts apstājas pēc skaitļu no 4 līdz 8 drukāšanas.

Kā redzam, cilpai “for” nav nosacījumu, un šī cilpa ir mūžīga, taču mums ir nosacījumu paziņojums, lai pārbaudītu, vai tas neturpinās mūžīgi. Mēs izmantojam pārtraukuma paziņojumu priekšteikumā if, lai izkļūtu no cilpas un pārtrauktu iterāciju ar iteratoru. Mēs esam izmantojuši inkrementoru, lai palielinātu mainīgo cilpā, pretējā gadījumā cilpa ir bezgalīga. Protams, mums ir nepieciešama zināma loģika, lai izkļūtu no cilpas, un tāpēc mums ir jāizmanto nosacījuma priekšraksts if.