„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.