Ciklas “while” izmantošana Bash skriptēšanā, lai atkārtotu komandu(-s).
Bash (Bourne Again Shell) ir apvalka komandu uzvedne un skriptu valoda GNU/Linux operētājsistēmās. Tas ir noklusējuma apvalks lielākajai daļai Linux izplatījumu.
Tāpat kā lielākā daļa skriptu valodu, Bash nodrošina cilpas sintakses, lai vairākas reizes atkārtotu līdzīgu uzdevumu. Šajā rakstā mēs uzzināsim, kā izmantot kamēr
cilpa Bash.
Ievads
The kamēr
cilpa programmā Bash tiek izmantota, lai vairākas reizes izpildītu komandu(-as) (izpildītās komandas), pamatojoties uz citas komandas(-u) izvadi (nosacījuma komandas). Izpildītās komandas turpinās darboties, līdz nosacījuma komanda tiks veiksmīgi izpildīta (t.i., atgriež 0 statusu. Jebkura Linux komanda atgriež 0 veiksmei un veselu skaitli, kas nav nulle, ja neveiksme).
Ja ir vairākas nosacījumu komandas, paziņojumā tiek ņemts vērā tikai pēdējās komandas statuss sarakstā, t.i., cilpa tiek izpildīta, līdz tiek veiksmīgi izpildīta pēdējā komanda sarakstā.
Vispārējā sintakse
Vispārējā sintakse priekš kamēr
cilpa valodā Bash ir:
kamēr darīts
Izpildes komandu saraksts turpinās darboties, līdz tiks veiksmīgi izpildīta pēdējā komanda nosacījumu komandu sarakstā un iziet ar statusu 0. Iterācijas laikā, kad pēdējā nosacījuma komanda neizdodas, cilpa iziet.
Lietotājs komandu sarakstos var norādīt jebkuru izpildāmo failu. Tās var būt standarta Linux programmas vai pielāgotas lietotāja programmas vai skripti. Katrai komandai jābūt vai nu jaunā rindā, vai jāatdala ar semikolu tajā pašā rindā.
Apskatīsim dažus piemērus.
Cilpa, līdz mainīgajam ir noteikta vērtība: Sekojošā cilpa tiek izpildīta līdz mainīgā vērtībai x
nav vienāds ar 10.
x=0, kamēr [[ $x -ne 10 ]] veic atbalsi $x ((x++))
Katrā iterācijā mēs pārbaudām, vai x vērtība ir 10. Vērtība tiek pārbaudīta, izmantojot pārbaude
komandu. [[ Izteiksme ]]
ir testa komandas sintakse (sk cilvēka tests
). Šeit, jo mēs izmantojam -nē
operators (kas apzīmē “nav vienāds ar”), testa komanda atgriež 0, t.i., panākumus, ja x vērtība nav 10, un tā atgriež vērtību, kas nav nulle, t.i., neveiksmi, ja x vērtība ir 10.
Tad iekšā darīt... darīts
bloku, mēs izdrukājam x vērtību un palielinām to. Kad x vērtība ir 10, testa komanda atgriež statusu, kas nav nulle, un cilpa iziet.
Piezīme: Indeksa mainīgais, kas tiek izmantots cilpā while, ir jāinicializē vai nu pirms while cilpas, vai nosacījumu komandās, atšķirībā no for loop, kas ļauj inicializēt mainīgo netieši.
Ar vairākām nosacījumu komandām: Sekojošā cilpa izveido 5 nosauktus direktorijus dir0, dir1, ... dir4
.
z=0, kamēr atbalss "Failu saraksts:" ls -l [[ $z -ne 5 ]] do echo "Dir$z izveide..." mkdir dir$z ((z++)) pabeigts
Pirmās komandas echo "Failu saraksts:"
un ls -l
tiks izpildīts vienreiz pilnībā; to panākumi vai neveiksmes nekādi neietekmē cik ilgi cilpa darbosies.
Pēc tam tiks izpildīta testa komanda mainīgā z vērtības pārbaudei. Kamēr z vērtība nav 5, testa komanda atgriež veiksmes statusu, un līdz ar to cilpa turpina darboties. Nosacījumu komandas un izpildītās komandas turpina darboties kārtībā. Šeit katrai iterācijai vispirms tiks izpildīta echo komanda un ls komanda stāvoklī, un pēc tam trešā nosacījuma komanda pārbauda z vērtību. Ja tas nav 5, tas ieiet cilpā un izpilda dotās komandas.
Pārtraukt un turpināt
Pārtraukuma paziņojums par nosacījumu iziešanai
Mēs varam izmantot arī nosacījumu paziņojumu ja
cilpas iekšpusē. The ja
paziņojumu var izmantot ar a pārtraukums
paziņojums nosacītai izejai no cilpas.
x=0, kamēr [[ $x -ne 10 ]] darīt, ja [[ $x -eq 5 ]] break fi echo $x ((x++)) izdarīts
Iepriekš minētā while cilpa izdrukās skaitļus no 0 līdz 4. Kad i vērtība ir 5, tā izkļūs no cilpas. Tas ir īpaši noderīgi, ja ir jāiziet no cilpas, kad komanda dod noteiktu izvadi.
Turpiniet paziņojumu, lai izlaistu iterāciju ar nosacījumiem
Bašam ir arī a Turpināt
paziņojumu, lai izlaistu atlikušo iterācijas daļu cilpā, ja ir izpildīts konkrēts nosacījums.
x=0 kamēr [[ $x -ne 10 ]] darīt, ja [[ $x -eq 5 ]] turpināt fi echo $x ((x++)) izdarīts
Iepriekš minētā cilpa izdrukās skaitļus no 0 līdz 10, izņemot 5, jo iterācijas laikā x=5
ir turpināt priekšraksts, kas izlaidīs pārējo kodu cilpas sākumā ar iterāciju x=6
.
Cilpu izmantošana: skripti un komandrinda
Cilpas sintakses var izmantot Bash apvalkā tieši vai no izpildāmā čaulas skripta faila. Līdzīgs priekš
un kamēr
cilpas, vienreiz an kamēr
čaulā tiek ievadīta cilpas sintakse, apvalks turpina uzvedni, lai ļautu lietotājam turpināt cilpas komandas.
Vai arī lietotājs var to saglabāt skripta failā un izpildīt skripta failu.
The #!/bin/bash
sākumā norāda tulku, kas tiks izmantots, kad fails tiek izpildīts. Lai gan Bash ir mūsdienās visbiežāk izmantotais apvalks, daži lietotāji dod priekšroku tādiem apvalkiem kā zsh
, kas jānorāda bash vietā šī faila sākumā.
Lai piešķirtu izpildes atļaujas šim failam palaidiet:
chmod +x test.sh
Visbeidzot, lai izpildītu failu, palaist:
./test.sh
Secinājums
The kamēr
cilpa, līdzīga priekš
un līdz
cilpas ir svarīga Bash skriptēšanas funkcija. Lai gan cilpai ir līdzīgs lietojums kā līdz cilpai, izņemot to, ka to izmanto, lai palaistu alternatīvas komandas/programmas, kad konkrēta programma ir veiksmīga. Tas bieži vien ir noderīgs uzlabotajos tīkla skriptos, sistēmas uzturēšanas skriptos utt.