Bash „Iki“ ciklas: pamoka ir pavyzdžiai

„Bash“ scenarijaus ciklo „iki“ naudojimas komandoms (-oms) pereiti.

Bash (Bourne Again Shell) yra apvalkalo komandų eilutė ir scenarijų kalba GNU/Linux operacinėse sistemose. Tai yra numatytasis daugelio Linux platinimų apvalkalas.

Kaip ir dauguma skriptų kalbų, „Bash“ pateikia ciklo sintakses, kad panašias užduotis kartotų kelis kartus. Šiame straipsnyje mes sužinosime, kaip naudoti iki kilpa Bash.

Įvadas

The iki kilpa Bash yra naudojama komandoms (vykdomoms komandoms) vykdyti kelis kartus, remiantis kitos komandos (-ų) išvestimi (sąlygų komandos). Vykdomos komandos bus vykdomos tol, kol sąlygos komanda ir toliau nepavyks (t. y. grąžins ne nulinę būseną. Bet kuri „Linux“ komanda grąžina 0, jei sėkminga, ir ne nulinį sveikąjį skaičių, jei nepavyksta). Tai yra visiškai priešinga kol ciklas, kuriame vykdomos komandos veikia tol, kol sąlygos komanda bus sėkminga.

Jei yra kelios sąlygų komandos, sakinyje atsižvelgiama tik į paskutinės sąrašo komandos būseną, t. y. ciklas bus vykdomas tol, kol paskutinė sąrašo komanda ir toliau nepavyks.

Bendroji sintaksė

Bendroji sintaksė, skirta iki kilpa Bash yra:

kol bus padaryta

Vykdymo komandų sąrašas bus vykdomas tol, kol nepavyks paskutinė komanda sąlygų komandų sąraše. Kai paskutinė komanda yra sėkminga, ciklas išeina.

Vartotojai komandų sąrašuose gali nurodyti bet kurį vykdomąjį failą. Tai gali būti standartinės Linux programos arba tinkintos vartotojo programos ar scenarijai. Kiekviena komanda turi būti naujoje eilutėje arba atskirta kabliataškiu toje pačioje eilutėje.

Pažiūrėkime kelis pavyzdžius.

Ciklas tol, kol kintamasis turi tam tikrą reikšmę: Ši kilpa vykdoma iki kintamojo reikšmės x yra 10.

x=0, kol [[ $x -eq 10 ]] atkartos $x ((x++))

Kiekvienoje iteracijoje tikriname, ar x reikšmė yra 10. Vertė tikrinama naudojant bandymas komandą. [[ Išraiška ]] yra testo komandos sintaksė (žr vyro testas).

Tada viduje padaryti... padaryta bloką, tiesiog išspausdiname x reikšmę ir ją padidiname. Ciklas išeina, kai sąlygos komanda yra sėkminga, ty kai x $ yra lygus 10.

Pastaba: Indekso kintamasis, naudojamas kilpoje „iki“, turi būti inicijuotas prieš kilpą „iki“ arba sąlygų komandose, o ne cikle, kuris leidžia netiesiogiai inicijuoti kintamąjį.

Su keliomis sąlygų komandomis: Ši kilpa sukuria 5 pavadintus katalogus dir0, dir1, ... dir4.

z=0 iki echo "Labas" echo "Bye" [[ $z -eq 5 ]] do echo "Kuriamas dir$z..." mkdir dir$z ((z++)) baigtas

Pirmosios komandos echo „Hi“ ir aidas „Bye“ bus įvykdytos vieną kartą; jų sėkmė ar nesėkmė neturi jokios įtakos ciklo trukmei.

Tada bus vykdoma testavimo komanda, skirta patikrinti kintamojo z reikšmę. Kol ši komanda neveikia, ty kol z reikšmė nėra 5, sąlygų komandos ir vykdomos komandos veikia tvarkingai. Čia kiekvienai iteracijai pirmiausia bus paleistas 2 echo komandos su sąlyga, o tada 3-osios sąlygos komanda patikrins z reikšmę. Jei jis nėra 5, jis patenka į kilpą ir vykdo nurodytas komandas.

Pertrauk ir tęsk

Pertraukos pareiškimas dėl sąlyginio išėjimo

Taip pat galime naudoti sąlyginį teiginį jeigu kilpos viduje. The jeigu teiginys gali būti naudojamas su a pertrauka pareiškimas, skirtas sąlyginiam išėjimui iš ciklo.

x=0 iki [[ $x -eq 10 ]] padaryti, jei [[ $x -eq 5 ]] pertrauka fi echo $x ((x++)) atlikta

Aukščiau pateiktas iki ciklas spausdins skaičius nuo 0 iki 4. Tada, kai i reikšmė bus 5, ji ištrūks iš ciklo. Tai ypač naudinga, kai iš ciklo reikia išeiti, kai komanda duoda tam tikrą išvestį.

Tęskite teiginį, kad sąlygiškai praleistumėte iteraciją

Bashas taip pat turi a Tęsti teiginys praleisti likusią iteracijos dalį cikle, jei įvykdoma tam tikra sąlyga.

x=0 iki [[ $x -eq 10 ]] daryti, jei [[ $x -eq 5 ]] tęsti fi echo $x ((x++)) padaryta

Aukščiau pateikta kilpa atspausdins skaičius nuo 0 iki 10, išskyrus 5, nes iteracijos metu x=5 yra teiginys tęsti, kuris praleidžia visą likusį kodą ciklo pradžioje su iteracija x=6.

Ciklų naudojimas: scenarijai ir komandų eilutė

Ciklo sintaksės gali būti naudojamos Bash apvalkale tiesiogiai arba iš vykdomojo apvalkalo scenarijaus failo. Panašus į dėl ir kol kilpos, kartą an iki ciklo sintaksė įvedama apvalkale, apvalkalas tęsia raginimą, kad vartotojas galėtų tęsti komandas, kurias reikia atlikti.

Arba vartotojas gali tai išsaugoti scenarijaus faile ir vykdyti scenarijaus failą.

The #!/bin/bash pradžioje nurodo interpretatorių, kuris bus naudojamas vykdant failą. Nors Bash yra dažniausiai naudojamas apvalkalas, kai kurie vartotojai teikia pirmenybę tokiems apvalkalams kaip zsh, kuris turėtų būti nurodytas vietoje bash šio failo pradžioje.

Suteikti vykdymo leidimus šiam failui paleiskite:

chmod +x test.sh

Pagaliau, failo vykdymui, paleisti:

./test.sh

Išvada

The iki kilpa yra dar viena svarbi Bash scenarijaus funkcija. Tai ypač svarbu sudėtinguose scenarijuose, kai tikimasi, kad tam tikras programų rinkinys grąžins nesėkmės būseną, o kai kurios kitos komandos turi būti vykdomos, kad būtų užregistruota gedimas, išsamiai parodyta klaida arba tiesiog vykdomos kai kurios alternatyvios programos.