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 dėl ciklas 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:
-
Įveskite mkdir scenarijus (daugiau sužinokite apie mkdir čia).
-
Įveskite cd scenarijus (tai pakeičia katalogą į scenarijus ).
-
Įveskite nano examplen.sh (kur n yra pavyzdys, su kuriuo dirbate).
-
Įveskite scenarijų.
-
Paspauskite CTRL + O išsaugoti ir CTRL + X išeiti.
-
Paleisti bash examplen.sh (vėl, su n yra pavyzdys, su kuriuo dirbate).
Kaip kilpa per sąrašą
#! / bin / bashfor numeris 1 2 3 4 5doecho $ numberdoneexit 0
"BASH" būdas naudoti "for" kilpams yra šiek tiek kitoks, nei daugelis kitų programavimo ir scenarijų kalbų tvarko "už" kilpų. Pabandykime scenarijų. BASH "for" loop all, teiginiai tarp daryk ir padaryta atliekami vieną kartą už kiekvieną sąraše esantį elementą. Pirmiau pateiktame pavyzdyje sąrašas yra viskas, kas prasideda po žodžio in (t. y. 1 2 3 4 5). Kiekvieną kartą, kai ciklas pasikartoja, kita reikšmė sąraše yra įterpiama į kintamąjį, nurodytą po žodžio "dėl" . Pirmiau minėtoje kilpoje kintamasis vadinamas numeris . Echo pareiškimas naudojamas ekrane rodomai informacijai. Todėl šiame pavyzdyje skaitmenys nuo 1 iki 5 išvedami vienas po kito ekrane: 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 / bashfor numeris {1..10} doecho "$ number" doneexit 0
Taisyklės iš esmės yra vienodos. Vertės po žodžio " " sudaryti sąrašą, kad jis būtų kartojamas, ir kiekviena sąraše esanti reikšmė dedama į kintamąjį (t. y. numerį), o kiekvieną kartą, kai ciklas kartoja, pareiškimai tarp daryk ir padaryta yra atliekami. 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 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 / bashfor numeris (0..100..10) doecho "$ number" doneexit 0
Taisyklės iš esmės yra vienodos. Yra sąrašas, kintamasis ir aprašų rinkinys, kurį reikia atlikti tarp daryk ir padaryta . Š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: 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 / bashfor ((skaičius = 1; skaičius <100; skaičius ++)) {if (($ number% 5 == 0)) thenecho "$ skaičius dalijamas 5";
Linija prasideda nustatant kintamojo numerį 1 (skaičius = 1 ) Kontūro likutis kartosis, o skaičiaus vertė yra mažesnė nei 100 ( numeris <100 ) Vertė numeris pakeičia, pridedant 1 po jo po kiekvienos kartotinės ( numeris ++ ). Viskas tarp garbanotų petnešų yra atliekama per kiekvieną kilpos kartotę. Bitus tarp petnešos patikrina a numeris , padalina jį į 5, o likusią dalį lygina su 0. Jei likusioji dalis yra 0, tada skaičius yra dalijamasis 5, o tada rodomas ekrane. Pavyzdžiui: Jei norite pakeisti iteracijos žingsnį, galite pakeisti numerio ++ skirsnį numeris = skaičius + 2 , numeris = skaičius + 5 , arba numeris = skaičius + 10 ir tt Tai gali būti dar labiau sumažinta iki numeris + = 2 arba skaičius + = 5 . 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 / bashfailui ./*.mp3dompg -w ./wavs/"${file}".wav "$ file" padaryta
Šio pavyzdžio sąrašas yra kiekvienas failas su .MP3 plėtiniu dabartiniame aplanke, o kintamasis yra a failas . The mpg komanda konvertuoja MP3 failą į WAV. Tačiau, greičiausiai, turėsite įdiegti šią programą naudodami paketų tvarkytuvą.
Kaip kilpa tarp pradžios ir pabaigos taško
Kaip praleisti numerius diapazone
Daugiau tradicinių ieškote kilpos
Praktinis pavyzdys