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.