Bash “While” cilpa: apmācība un piemēri

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.