Kaip parašyti BASH "for" Loop

Kaip naudoti raktą "BASH" už "kilpos scenarijus

BASH (kuris reiškia "Bourne Again Shell") yra scenarijų kalba, kurią naudoja dauguma Linux ir UNIX operacinių sistemų.

Galite paleisti BASH komandas terminalo lange vienas po kito arba galite komandas pridėti tekstinį failą, kad gautumėte shell scenarijų.

Puikus dalykas, kaip rašyti shell scenarijus yra tai, kad galite paleisti juos dar kartą. Pavyzdžiui, įsivaizduokite, kad turite pridėti naudotoją prie sistemos, nustatyti jų teises ir tvarkyti jų pradinę aplinką. Galite rašyti komandas ant popieriaus lapo ir paleisti juos, pridedant naujų naudotojų arba galite parašyti vieną scenarijų ir tiesiog perduoti parametrus į šį scenarijų.

Skriptų kalbos, tokios kaip BASH, turi panašias programavimo konstrukcijas kaip ir kitos kalbos. Pavyzdžiui, galite naudoti importo parametrus, kad gautumėte įvestį iš klaviatūros ir išsaugotų juos kaip kintamuosius. Tada jūs galite gauti scenarijų atlikti tam tikrą veiksmą, pagrįstą įvesties parametrų verte .

Svarbi bet kokio programavimo ir scenarijų kalbos dalis yra galimybė paleisti tą patį kodą iš karto ir vėl.

Yra keletas būdų pakartoti kodą (taip pat žinomas kaip kilpos). Šiame vadove bus parodyta, kaip parašyti "for" kilpą.

A linijai kartoja tam tikrą kodo dalį. Jie naudingi, kad komandų eilė galėtų veikti, kol bus įvykdyta tam tikra sąlyga, po kurios jie sustos.

Šiame vadove bus rodomi penki būdai, kaip naudoti raktą BASH scenarijuje.

Prieš pradedant

Prieš pradedant naudoti "loop" pavyzdžius, turite atidaryti terminalo langą ir atlikite šiuos veiksmus:

  1. Įveskite mkdir scenarijus ( sužinokite daugiau apie mkdir čia )
  2. Įveskite cd scenarijus (tai pakeičia katalogą į scenarijus )
  3. Įveskite nano examplen.sh (kur n yra pavyzdys, su kuriuo dirbate).
  4. Įveskite scenarijų
  5. Paspauskite CTRL + O, kad išsaugotumėte, ir CTRL + X, kad išeitumėte
  6. Pradėti bash examplen.sh (dar kartą, kai n yra pavyzdys, su kuriuo dirbate)

Kaip kilpa per sąrašą

#! / bin / bash
už numerį 1 2 3 4 5
daryk
echo $ numeris
padaryta
išeiti 0

"BASH" būdas naudoti "for" kilpams yra šiek tiek kitoks, nei daugelis kitų programavimo ir scenarijų kalbų tvarko "už" kilpų. Pabandykime scenarijų žemyn ...

BASH "for" loop all, teiginiai tarp do ir done yra atliekami vieną kartą už kiekvieną sąrašo elementą.

Pirmiau pateiktame pavyzdyje sąrašas yra viskas, kas prasideda po žodžio (ty 1 2 3 4 5).

Kiekvieną kartą, kai ciklas kartoja, kita reikšmė sąraše yra įterpiama į kintamąjį, nurodytą po žodžio "už" . Pirmiau minėtoje kilpoje kintamasis vadinamas numeriu .

Echo pareiškimas naudojamas ekrane rodomai informacijai.

Todėl šiame pavyzdyje skaitmenys nuo 1 iki 5 išvedami vienas po kito ekrane:

Kaip kilpa tarp pradžios ir pabaigos taško

Problema, susijusi su aukščiau pateiktu pavyzdžiu, yra tai, kad jei norite apdoroti didesnį sąrašą (tarkim 1-500), tai užtruks, kad pirmiausia būtų įvesti visi skaičiai.

Tai atveda prie antrojo pavyzdžio, kuriame parodyta, kaip nurodyti pradžios ir pabaigos tašką:

#! / bin / bash
už numerį {1..10}
daryk
echo "$ number"
padaryta
išeiti 0

Taisyklės iš esmės yra vienodos. Vertės po žodžio " in" sudaro sąrašą, kad būtų galima pasikartoti, o kiekviena sąraše esanti reikšmė dedama į kintamąjį (ty skaičių), o kiekvieną kartą, kai ciklas pasikartojantis, atliekami teiginiai tarp " padaryti ir padaryti" .

Pagrindinis skirtumas yra tai, kaip sudaromas sąrašas. Garbanotieji skliausteliai {} iš esmės reiškia diapazoną, o diapazonas šiuo atveju yra nuo 1 iki 10 (du taškai atskiria diapazono pradžią ir pabaigą).

Todėl šis pavyzdys eina per kiekvieną skaičių nuo 1 iki 10 ir išveda numerį ekrane taip:

Tą pačią kilpą galėjo parašyti panašiai kaip sintaksė, identiška pirmajam pavyzdžiui:

už numerį 1 2 3 4 5 6 7 8 9 10

Kaip praleisti numerius diapazone

Ankstesnis pavyzdys parodė, kaip užmegzti ryšį tarp pradžios ir pabaigos taško, todėl dabar mes ieškosime, kaip praleisti numerius diapazone.

Įsivaizduokite, kad norite suktis nuo 0 iki 100, bet parodyti tik dešimtąjį skaičių. Šis scenarijus rodo, kaip tai padaryti:

#! / bin / bash
už numerį {0..100..10}
daryk
echo "$ number"
padaryta
išeiti 0

Taisyklės iš esmės yra vienodos. Čia yra sąrašas, kintamasis ir pareiškimų rinkinys, kuris turi būti atliktas tarp atlikto ir atlikto veiksmo . Šiuo metu šis sąrašas atrodo taip: {0..100..10}.

Pirmasis skaičius yra 0, o pabaigos numeris - 100. Trečias numeris (10) yra sąraše esančių elementų skaičius, kurį jis praleidžia.

Todėl aukščiau pateiktame pavyzdyje rodoma tokia išvestis:

Daugiau tradicinių ieškote kilpos

BASH kilpos rašymo būdas yra šiek tiek keistas lyginant su kitomis programavimo kalbomis.

Tačiau galite parašyti liniją, panašią į C programavimo kalbą, tokia kaip:

#! / bin / bash
už ((skaičius = 1; skaičius <100; skaičius ++))
{
if (($ number% 5 == 0))
tada
echo "" $ number dalijamas 5 "
fi
}
išeiti 0

Klasė prasideda nustatant kintamojo numerį 1 (skaičius = 1 ). Apskritai bus nuolat kartojama, o skaičiaus vertė yra mažesnė nei 100 ( skaičius <100 ). Numerio keitimo vertė, pridedant 1 po jo po kiekvienos kartotinės ( numeris ++ ).

Viskas tarp garbanotų petnešų yra atliekama per kiekvieną kilpos kartotę.

Bitus tarp lankstų patikrina skaičiaus vertė, padalija jį į 5, o likusią dalį lygina su 0. Jei likusioji vertė yra 0, tada skaičius yra dalijamasis 5 ir tada rodomas ekrane.

Pavyzdžiui:

Jei norite pakeisti iteracijų žingsnį, galite keisti skaičių ++ sekciją, kad būtų numeris = numeris + 2 , numeris = numeris + 5 , arba numeris = numeris + 10 ir tt

Tai gali būti dar labiau sumažinta iki skaičiaus + = 2 arba skaičiaus + = 5 .

Praktinis pavyzdys

Skirtukai gali daugiau nei kartoti skaičių sąrašus. Galite iš tikrųjų naudoti kitų komandų kaip sąrašo išvestį.

Šiame pavyzdyje parodyta, kaip konvertuoti garso failus iš MP3 į WAV :

#! / bin / bash

Šio pavyzdžio sąrašas yra kiekvienas failas su .MP3 plėtiniu dabartiniame aplanke, o kintamasis yra failas .

" Mpg" komanda konvertuoja MP3 failą į WAV. Tačiau, greičiausiai, turėsite įdiegti šią programą naudodami paketų tvarkytuvą.