Kuinka kirjoittaa Bash WHILE-silmukat

Komennot, syntaksi ja esimerkit

Voit suorittaa komentojonoja kirjoittamalla ne komentotiedostoon ja suorittamalla se sitten.

Skriptitiedosto on yksinkertaisesti tekstitiedosto, yleensä .SH-tiedostopääte, joka sisältää ohjeen, joka voidaan myös suorittaa komentoriviltä ( shell ).

Vaikka silmukan esimerkit

Alla on esimerkki silmukan silmukasta. Kun tämä toteutetaan, tämä komentotiedosto tulostaa näytössä näkyvät numerot 1-9. While-lausuma antaa sinulle enemmän joustavuutta määritettäessä lopetus edellytys kuin for-loop .

#! / bin / bash count = 1 kun [$ count -le 9] echo "$ count" sleep 1 ((count ++)) tehty

Voit esimerkiksi tehdä edellisen käsikirjoituksen ääretönpiiriä jättämällä increment-lauseen "((count ++))":

#! / bin / bash count = 1 kun [$ count -le 9] echo "$ count" nukkua 1 tehty

"Sleep 1" -esitys keskeyttää toteutuksen 1 sekunnin kuluttua jokaisesta iteraatiosta. Käytä Ctrl + C -näppäimistön pikakuvaketta lopettaaksesi prosessin.

Voit myös luoda ääretön silmukka asettamalla kaksoispiste ehdoksi:

#! / bin / bash count = 1 kun: echo "$ count" sleep 1 ((count ++)) tehty

Jotta voit käyttää moninkertaisia ​​ehtoja while-silmukassa, sinun on käytettävä kaksoisnäkymän otsikkotunnusta:

count = 1 tehty = 0 kun [[$ count -le 9] && [$ done == 0]] echo "$ count" sleep 1 ((count ++)) jos [$ count == 5]; sitten $ done = 1 fi tehty

Tässä käsikirjoituksessa muuttujan "tehnyt" alustetaan arvoon 0 ja asetetaan sitten arvoon 1, kun lukema saavuttaa 5. Loop-ehto kertoo, että silmukka taas jatkuu niin kauan kuin "count" on alle yhdeksän ja "done" on yhtä suuri nollaan. Siksi silmukat irtaavat, kun laskenta on sama kuin 5.

"&&" tarkoittaa loogista "ja" ja "||" tarkoittaa loogista "tai".

Vaihtoehtoinen merkintä sidosryhmille "ja" ja "tai" olosuhteissa on "-a" ja "-o", joissa on yksiriviset hakasulkeet. Edellä oleva edellytys:

[[$ count -le 9] && [$ done == 0]]

... voidaan kirjoittaa uudelleen seuraavasti:

[$ count -le 9] -a [$ done == 0]

Tekstitiedoston lukeminen suoritetaan yleensä ajanhetken silmukan avulla. Seuraavassa esimerkissä bash-skripti lukee sisällön rivi rivillä "inventory.txt:"

FILE = inventory.txt exec 6

Ensimmäinen rivi määrittää syötetiedoston nimen "FILE" -muuttujalle. Toinen rivi tallentaa "standarditulon" tiedostojen kuvaajalle "6" (se voi olla mikä tahansa arvo 3-9). Tämä tehdään niin, että "vakiotulo" voidaan palauttaa skriptin lopussa olevaan tiedostojen kuvaajaan "0" (ks. Toteamus "exec 0" Kolmannessa rivissä syöttötiedosto on määritetty tiedostojen kuvaajaksi "0", jota käytetään standardin syöttöä varten. "Lue" -lausunto lukee rivin jokaisesta iteroitumisesta ja määrittää sen riville "line1".

Voit purkaa aika-silmukan ennenaikaisesti seuraavasti:

count = 1 done = 0 kun [$ count -le 9] echo "$ count" sleep 1 ((count ++)), jos [$ count == 5]

Tauko-ilmoitus ohittaa ohjelman suorituksen loppuun silmukan aikana ja suorittaa minkä tahansa lausunnon jälkeen. Tällöin lausuma "Kaiku valmiiksi."

Jatkuva lausunto ohittaa kuitenkin vain loput nykyisen iteraation silmukkamallin ja siirtyy suoraan seuraavaan iterointiin:

count = 1 tehty = 0 kun [$ count -le 9] nukkuu 1 ((count ++)), jos [$ count == 5] jatka sitten fi echo "$ count" tehty echo Valmis

Tällöin "jatka" -esitys suoritetaan, kun muuttujan "count" saavuttaa 5. Tämä tarkoittaa, että myöhempi lausuma (echo "$ count") ei suoriteta tällä iteroinnilla (kun "count" -arvo on 5).