Koska BASH on komentorivikieli, saamme melko monipuolista kokemusta ohjelmointitaitojen hyödyntämisestä tehtävien suorittamisessa päätteessä. Voimme käyttää silmukoita ja ehdollisia lauseita BASH-skripteissä suorittaaksemme joitain toistuvia ja hankalia ongelmia yksinkertaisella ohjelmallisella tavalla. Tässä artikkelissa keskitymme siihen silmukalle BASH-skripteissä.
Riippuen käyttötapauksesta ja ongelmasta, jota se yrittää automatisoida, on olemassa pari tapaa käyttää silmukoita.
- Simple For loop
- Aluepohjainen silmukalle
- Array iteraatio silmukoille
- C-tyylinen silmukoille
- Infinite for loop
Simple For loop
For-silmukan suorittamiseksi voimme kirjoittaa seuraavan syntaksin:
#!/bin/bash for n in a b c; do echo $n done>
- Ensimmäisessä iteraatiossa
n>ottaa arvon a, ja komentosarja tulostaa a. - Toisessa iteraatiossa
n>ottaa arvon b, ja komentosarja tulostaa b. - Kolmannessa iteraatiossa
n>ottaa arvon c, ja komentosarja tulostaa c.

Yllä oleva komento toistaa määritetyt elementit sisään avainsana yksitellen. Elementit voivat olla numeroita, merkkijonoja tai muunlaisia tietoja.
Aluepohjainen silmukalle
Voimme käyttää silmukoille aluepohjaista. Tämän tyyppisessä silmukassa voimme määrittää aloitus-, lopetus- ja lisäyksen jokaisessa iteraatiossa (valinnainen). Voit tehdä tämän kahdella tavalla, eli mainitsemalla lisäys-/vähennysarvon ja lisäämällä oletusarvoisesti yhdellä. Syntaksi näyttää tältä:
#!/bin/bash for n in {1..5}; do echo $n done> 
Yllä olevassa koodissa käytämme {}-merkkiä numeroalueen määrittämiseen. Aaltosulkeiden sisällä määritämme aloituspisteen, jota seuraa kaksi pistettä ja päätepiste. Oletuksena se kasvaa yhdellä. Tästä syystä tulostamme 5 numeroa 1-5, molemmat mukaan lukien.
#!/bin/bash for n in {1..5..2}; do echo $n done> 
Tässä näemme, että silmukka kasvaa 2 yksiköllä, kuten kiharat aaltosulkeet mainitaan. Näin ollen numeroiden käsittely on helppoa ja kätevää. Tätä voidaan käyttää myös aakkosmerkkien kanssa.
HUOMAUTUS: Emme voi käyttää muuttujia aaltosulkeiden sisällä, joten arvot on koodattava. Muuttujien käyttämiseksi näemme seuraavissa osioissa perinteiset C-tyyliset silmukat.
Array iteraatio silmukoille
Voimme iteroida taulukoiden yli kätevästi bashissa käyttämällä silmukoita tietyllä syntaksilla. Voimme käyttää BASH:n erikoismuuttujia eli @ päästäksemme kaikkiin taulukon elementteihin. Katsotaanpa koodia:
#!/bin/bash s=('football' 'cricket' 'hockey') for n in ${s[@]}; do echo $n done> 
Voimme iteroida taulukon elementtejä käyttämällä @-operaattoria, joka saa kaikki taulukon elementit. Siten for-silmukkaa käyttämällä iteroimme niitä yksitellen. Käytämme muuttujaa ${muuttujan_nimi[@]}, jossa aaltosulkeet tässä laajentavat muuttujan s arvoa, joka on merkkijonojono. Käyttämällä [@]-operaattoria pääsemme kaikkiin elementteihin ja iteroimme niitä siten for-silmukassa. Tässä, n on iteraattori, joten voimme tulostaa arvon tai suorittaa vaaditun käsittelyn sille.
C-tyylinen silmukoille
Kuten aiemmin mainittiin, meidän on käytettävä for-silmukoiden sisällä olevia muuttujia iteroidaksemme useita elementtejä. Ja näin ollen C-tyylisillä silmukoilla on erittäin tärkeä rooli. Katsotaan kuinka käytämme niitä.
#!/bin/bash n=7 for (( i=1 ; i<=$n ; i++ )); do echo $i done>

Kuten näemme, voimme käyttää dynaamisesti loppuehtojen alueen arvoa. Muista, että kaksoissulkeiden välit voivat olla tarkoituksellisia ja ovat osa syntaksia. C-tyylinen silmukoille ovat silmukat, joissa on 3 osaa, alustusiteraattori, inkrementoija/vähentäjä ja loppuehto.
Yllä olevassa syntaksissa olemme alustaneet silmukkaiteraattorin/laskurin arvoon 1, joka voi olla mikä tahansa valinnan mukaan. Toinen osa on loppuehto, tässä olemme käyttäneet muuttujaa n joka alustetaan ennen for-silmukkaa ja siksi käytämme yksinkertaista $ operaattoria saadakseen muuttujan arvon. Lopuksi meillä on lisäys/vähentäjä, joka muuttaa iteraattorin/laskurin arvoksi, joka voi olla mikä tahansa, mutta esimerkissä olemme käyttäneet unaarioperaattoria (++) kasvattaa arvoa yhdellä, joka vastaa i=i+1 . Näin ollen voimme käyttää lauseita kuten i+=2, i–,++i, ja niin edelleen.
Infinite for loop
Emme käytä tätä usein, mutta joskus on hyödyllistä saada tietyt asiat toimimaan. Syntaksi on melko helppo ja samanlainen kuin C-tyylinen silmukoille.
#!/bin/bash n=4 for (( ; ; )); do if [ $n -eq 9 ];then break fi echo $n ((n=n+1)) done>
Kierros alkaan>asetettu arvoon 4. Se kasvaan>1:llä jokaisessa iteraatiossa ja tulostaa arvonn>siihen asti kunn>tulee yhtä suureksi kuin 9. Milloinn>saavuttaa 9,break>lauseke suoritetaan ja silmukka päättyy. Käsikirjoitus pysähtyy, kun numerot 4-8 on tulostettu.
java hashmap

Kuten voimme nähdä, `for`-silmukalla ei ole ehtoja ja tämä silmukka jatkuu ikuisesti, mutta meillä on ehtolauseke varmistaaksemme, että se ei jatku ikuisesti. Käytämme if-lauseen sisällä break-lausetta päästäksemme pois silmukasta ja lopettaaksemme iteroinnin iteraattorin kanssa. Olemme käyttäneet inkrementoria inkrementoimaan muuttujaa silmukassa, muuten silmukka on ääretön. Tietenkin tarvitsemme logiikkaa päästäksemme ulos silmukasta, ja siksi meidän on käytettävä if-ehtolauseketta.