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

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īgus uzdevumus. Šajā rakstā mēs uzzināsim, kā izmantot priekš cilpa Bash.

Ievads

Tipisks Bash skripts satur virkni komandu, kas jāizpilda viena pēc otras. Mainīgos var izmantot, lai saglabātu virknes, veselu skaitļu indeksa vērtības, komandas rezultātus utt. Ciklas ir nepieciešamas, ja lietotājs vēlas izpildīt noteiktu komandu vairākas reizes. Tas ir īpaši noderīgi, ja vienas komandas izvade ir saraksta formā, un katram rezultātam sarakstā ir jāpalaiž otra komanda.

Vispārējā sintakse

Vispārējā sintakse priekš priekš cilpa valodā Bash ir:

par to darīt ... ... darīts

Lūk, ir Bash mainīgais, kuram ir jābūt derīgam Linux čaulas mainīgā nosaukumam, ti, nosaukumā ir burtu (az, AZ), ciparu (0-9) un pasvītras (_) kombinācija, un tam jāsākas ar burtu vai pasvītrojums.

The ir vai nu pielāgots veselu skaitļu indeksu diapazons, kam tiks pievienota cilpa, vai arī pielāgots veselu skaitļu vai virkņu saraksts. Tajā var būt arī cita Linux komanda, tomēr šādas komandas izvadei jābūt atdalītai ar atstarpēm vai jaunās rindiņas rakstzīmēm, ti, Bash var parsēt sarakstā (Saraksts Bash pamatā ir vērtību kopums, kas atdalīts ar atstarpi vai jaunu rindiņu ).

Neatkarīgi no tā, kura(-as) komanda(-as) ir jāizpilda, tā(-as) ir jāievieto iekšpusē darīt.. darīts bloķēt.

Apskatīsim dažus vienkāršus piemērus.

Attiecas uz veselu skaitļu vērtību diapazonu: Šis kods izveido direktorijus ar nosaukumu dir1, dir2, dir3 līdz dir10.

for i in {1..10} do mkdir dir$i done

Pārlūkojot fiksēto vērtību sarakstu: Šis kods izdrukā katru virkni vai veselu skaitli dotajā fiksētajā sarakstā.

man iekš Hello 1 2 3 Bye! do echo $i done

Cilpa izpilde komandas izvadē: Tālāk norādītā koda cilpa pārsniedz izvadi no ls un izdrukā katra faila nosaukumu dotajā formātā.

for i in `ls` do echo "Faila nosaukums ir $i" darīts

Uz izteiksmēm balstīta sintakse

Bash ir iespējama arī uz izteiksmēm balstīta sintakse, kas līdzīga C programmēšanas valodai:

for ((1. izteiksme; 2. izteiksme; 3. izteiksme)) do ... ... darīts

Šeit, 1. izteiksme ir indeksa mainīgā(-u) inicializācija. 2. izteiksme ir nosacījums, kad ir jāiziet no cilpas; šis nosacījums tiek pārbaudīts katrā iterācijā. 3. izteiksme norāda indeksa mainīgā(-u) vērtības pieaugumu/samazināšanu/modifikācijas

Šis piemērs vienkārši izdrukā vērtības no 0 līdz 4:

for ((i=0;i<5;i++)) do echo $i darīts

Šis piemērs izveido bezgalīgu cilpu, jo netiek norādītas nekādas izteiksmes:

for (( ; ; )) do echo "Nospiediet Ctrl-C, lai apturētu" darīts

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.

for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]] then break else echo $i; esmu darīts

Iepriekš minētā cilpa izdrukās skaitļus no 0 līdz 4. Kad i vērtība ir 5, tā izlauzīsies no cilpas. Tas ir īpaši noderīgi, ja ir jāiziet no cilpas, kad komanda dod noteiktu izvadi. Piemēram, šī cilpa pārtrauc, ja un kad tā atrod tukšu failu.

failam `ls` do flen=`wc -c $file` if [[ "$flen" = "0 $file" ]] then echo "$fails ir tukšs" break else echo $flen fi darīts 

Komanda wc -c izdrukā rindiņu skaitu failā . Tas to izdrukā formātā , piemēram, 10 test.txt. Mēs izlaužamies no cilpas, kad rindu skaits ir 0, t.i., tukšs fails.

Turpiniet paziņojumu, lai izlaistu iterāciju ar nosacījumiem

Līdzīgi kā C un daudzās citās programmēšanas valodās, bash ir arī a Turpināt paziņojumu, lai izlaistu atlikušo iterācijas daļu cilpā, ja ir izpildīts konkrēts nosacījums.

for ((i=0;i<10;i++)) do if [[ $i -eq 5 ]], then turpināt fi echo $i; darīts

Iepriekš minētā cilpa izdrukās skaitļus no 0 līdz 10, izņemot 5, jo iterācijas laikā i=5 ir turpināt priekšraksts, kas izlaidīs pārējo kodu cilpas sākumā ar iterāciju i=6.

Nākamajā piemērā mēs izdrukājam rindiņu skaitu failā, un tiks veikta noteikta iterācija Turpināt ja tas ir direktorijs, nevis fails.

failam `ls` dariet if [[ -d $file ]], tad turpiniet fi wc -c "$file" darīts

[[ -d $fails ]] pārbauda, ​​vai fails ir direktorijs. Ja tā ir, mēs pārejam uz nākamo failu, t.i., nākamo iterāciju. Ja tas nav direktorijs, mēs izdrukājam faila rindu skaitu, izmantojot tualete komandu, kā parādīts arī iepriekš.

Cilpu izmantošana: skripti un komandrinda

Cilpas sintaksi var izmantot tieši Bash apvalkā vai no čaulas skripta faila. Reiz a priekš č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 priekš cilpa programmā Bash ir diezgan vienkārša funkcija, taču tā tiek izmantota gandrīz visos sarežģītos skriptu scenārijos. Tā apgūšana ir ļoti svarīga neatkarīgi no tā, vai esat parasts vai pieredzējis Linux lietotājs vai sākat apgūt sistēmas administrēšanas un DevOps uzdevumu automatizāciju.