Bash "Until" -silmukka: opetusohjelma ja esimerkkejä

Kunnes-silmukan käyttäminen Bash-skriptissä komennon (komentojen) ylittämiseen.

Bash (Bourne Again Shell) on komentotulkin komentokehote ja komentosarjakieli GNU/Linux-käyttöjärjestelmissä. Se on oletuskuori useimmille Linux-jakeluille.

Kuten useimmat skriptikielet, Bash tarjoaa silmukkasyntaksia samanlaisten tehtävien toistamiseksi useita kertoja. Tässä artikkelissa opimme käyttämään siihen asti kun silmukka Bashissa.

Johdanto

The siihen asti kun silmukkaa Bashissa käytetään komentojen (suoritetut komennot) suorittamiseen useita kertoja toisen komennon (ehtokomennot) tulosteen perusteella. Suoritetut komennot jatkuvat, kunnes ehtokomento epäonnistuu (eli palauttaa nollasta poikkeavan tilan. Jokainen Linuxin komento palauttaa 0:n onnistumisesta ja ei-nollan kokonaisluvun epäonnistumisesta). Tämä on täsmälleen vastakohta sillä aikaa silmukka, jossa suoritetut komennot jatkuvat, kunnes ehtokomento onnistuu.

Jos ehtokomentoja on useita, käsky ottaa huomioon vain luettelon viimeisen komennon tilan, eli silmukka suoritetaan, kunnes luettelon viimeinen komento epäonnistuu edelleen.

Yleinen syntaksi

Yleinen syntaksi kohteelle siihen asti kun silmukka Bashissa on:

kunnes on tehty

Suorita komentoluetteloa ajetaan, kunnes ehtokomentoluettelon viimeinen komento epäonnistuu. Kun viimeinen komento on onnistunut, silmukka poistuu.

Käyttäjät voivat määrittää minkä tahansa suoritettavan tiedoston komentoluetteloista. Se voi olla tavallisia Linux-ohjelmia tai mukautettuja käyttäjäohjelmia tai komentosarjoja. Jokainen komento tulee olla joko uudella rivillä tai erotettava puolipisteellä samalla rivillä.

Katsotaanpa muutamia esimerkkejä.

Silmukoita, kunnes muuttujalla on tietty arvo: Seuraava silmukka suoritetaan muuttujan arvoon asti x on 10.

x=0 kunnes [[ $x -eq 10 ]] tekee kaiun $x ((x++)) valmis

Jokaisessa iteraatiossa tarkistamme, onko x:n arvo 10. Arvoa tarkistetaan käyttämällä testata komento. [[ Ilmaisu ]] on testikomennon syntaksi (katso mies testi).

Sitten sisällä tehdä... tehty lohko, tulostamme yksinkertaisesti x:n arvon ja lisäämme sitä. Silmukka poistuu, kun ehtokomento on onnistunut, eli milloin $x on yhtä suuri kuin 10.

merkintä: "Kunnes"-silmukassa käytettävä indeksimuuttuja on alustettava joko ennen "kunnes"-silmukkaa tai ehtokomentoissa, toisin kuin for-silmukassa, joka mahdollistaa muuttujan alustamisen implisiittisesti.

Useilla ehtokomennoilla: Seuraava silmukka luo 5 hakemistoa nimeltä hakemisto0, hakemisto1, ... hakemisto4.

z=0 kunnes kaiku "Hei" echo "Bye" [[ $z -eq 5 ]] do echo "Luodaan dir$z..." mkdir dir$z ((z++)) valmis

Ensimmäiset komennot echo "Hi" ja echo "Bye" suoritetaan kerran kokonaan; niiden onnistumisella tai epäonnistumisella ei ole mitään vaikutusta silmukan kestoon.

Sitten suoritetaan testikomento muuttujan z arvon tarkistamiseksi. Kunnes tämä komento epäonnistuu, eli kunnes z:n arvo on 5, ehtokomennot ja suoritetut komennot toimivat järjestyksessä. Tässä jokaisessa iteraatiossa se suorittaa ensin 2 echo-komentoa tilassa ja sitten 3. ehtokomento tarkistaa z:n arvon. Jos se ei ole 5, se siirtyy silmukkaan ja suorittaa annetut komennot.

Tauko ja jatka

Katkoilmoitus ehdollista poistumista varten

Voimme käyttää myös ehdollista lausetta jos silmukan sisällä. The jos lausetta voidaan käyttää a tauko lauseke ehdolliseen silmukasta poistumiseen.

x=0 kunnes [[ $x -eq 10 ]] tee jos [[ $x -eq 5 ]] break fi echo $x ((x++)) valmis

Yllä oleva till-silmukka tulostaa numeroita välillä 0 - 4. Sitten kun i:n arvo on 5, se katkeaa silmukasta. Tämä on erityisen hyödyllistä, kun silmukasta on poistuttava, kun komento antaa tietyn tulosteen.

Jatka lausetta ohittaaksesi iteroinnin ehdollisesti

Bashilla on myös a jatkaa lauseke ohittaa silmukan iteraation jäljellä oleva osa, jos tietty ehto täyttyy.

x=0 kunnes [[ $x -eq 10 ]] tee jos [[ $x -eq 5 ]] jatka fi echo $x ((x++)) valmis

Yllä oleva silmukka tulostaa numerot 0-10, paitsi 5, koska iteroinnin aikana x=5 on jatka-käsky, joka ohittaa loput koodista silmukassa iteroinnin alussa x=6.

Silmukoiden käyttäminen: komentosarjat ja komentorivi

Silmukkasyntakseja voidaan käyttää Bash shellissä suoraan tai suoritettavasta shell-skriptitiedostosta. Samanlainen kuin varten ja sillä aikaa silmukat, kerran an siihen asti kun silmukan syntaksi syötetään komentotulkkiin, komentotulkki jatkaa kehotetta antaakseen käyttäjän jatkaa silmukoitavia komentoja.

Tai muuten käyttäjä voi tallentaa tämän komentosarjatiedostoon ja suorittaa komentosarjatiedoston.

The #!/bin/bash alussa määrittää tulkin, jota käytetään, kun tiedosto suoritetaan. Vaikka Bash on yleisimmin käytetty kuori nykyään, jotkut käyttäjät pitävät enemmän sellaisista kuorista kuin zsh, joka tulee määrittää bashin tilalle tämän tiedoston alussa.

Suoritusoikeuksien myöntäminen suorita tälle tiedostolle:

chmod +x test.sh

Lopuksi, suorittaaksesi tiedoston, juosta:

./test.sh

Johtopäätös

The siihen asti kun loop on toinen tärkeä ominaisuus Bash-komentosarjassa. Se on erityisen tärkeä monimutkaisissa komentosarjoissa, kun tiettyjen ohjelmien odotetaan palauttavan epäonnistumistilan ja joitain muita komentoja on suoritettava virheen kirjaamiseksi, virheen näyttämiseksi yksityiskohtaisesti tai yksinkertaisesti joidenkin vaihtoehtoisten ohjelmien suorittamiseksi.