„Bash“ scenarijus – „Bash“ ir „Bash“ scenarijų įvadas
„Bash“ yra komandų eilutės interpretatorius arba „Unix Shell“ ir jis plačiai naudojamas GNU/Linux operacinėje sistemoje. Ją parašė Brianas Jhanas Foxas. Jis naudojamas kaip numatytasis prisijungimo apvalkalas daugeliui „Linux“ platinimų. Scenarijus naudojamas automatizuoti užduočių vykdymą, kad žmonėms nereikėtų jų atlikti atskirai. Bash scenarijus yra puikus būdas automatizuoti įvairių tipų užduotis sistemoje. Kūrėjai gali vengti pasikartojančių užduočių naudodami bash scenarijus.
Bash scenarijus palaiko kintamuosius, sąlyginius sakinius ir kilpas, kaip ir programavimo kalbos. Žemiau yra keletas „Bash Scripts“ programų -
Turinys
- „Bash“ scenarijų programos:
- „Bash“ scenarijų pranašumai:
- Kaip rašyti Bash scenarijus?
- Failų pavadinimai ir leidimai
- Kintamieji
- Įvestis ir išvestis
- Funkcijos
- Sprendimų priėmimas
- Stygų ir skaičių palyginimai
„Bash“ scenarijų programos:
- Manipuliavimas failais
- Įprastų užduočių, pvz., atsarginės kopijos kūrimo, vykdymas
- Automatika
Žemiau pateikiami „Bash“ scenarijų naudojimo pranašumai –
„Bash“ scenarijų pranašumai:
- Tai paprasta.
- Tai padeda išvengti pasikartojančių užduočių
- Paprasta naudoti
- Dažnai atliekamos užduotys gali būti automatizuotos
- Komandų seka gali būti vykdoma kaip viena komanda.
Žemiau pateikiami „Bash“ scenarijų trūkumai -
Bash scenarijų trūkumai:
- Bet kokia rašymo klaida gali brangiai kainuoti.
- Beveik kiekvienai vykdomai apvalkalo komandai paleistas naujas procesas
- Lėtas vykdymo greitis
- Suderinamumo problemos tarp skirtingų platformų
Kaip rašyti Bash scenarijus?
Norėdami parašyti Bash scenarijų, atliksime šiuos veiksmus:
- Pirmiausia sukursime failą su plėtiniu .sh.
- Tada mes užrašysime jame esančius bash scenarijus
- Po to mes suteiksime jam leidimą vykdyti.
Norėdami sukurti ir parašyti failą su plėtiniu .sh, galime naudoti gedit teksto redaktorius. Įsakymas jam bus -
gedit scriptname.sh
Pirmoji mūsų scenarijaus failo eilutė bus -
#!/bin/bash
Tai parodys, kad sistema naudos „Bash“ vykdymui. Tada galime rašyti savo scenarijus.
Užsirašykime tik paprastą scenarijų, kuris išspausdins kai kurias eilutes terminale. Kodas bus toks -
#!/bin/bash echo 'Hello, techcodeview.com'
Dabar išsaugosime failą ir suteiksime jam leidimą vykdyti. Norėdami tai padaryti, naudokite šią komandą -
chmod +x scriptname.sh
Šalia, norėdami vykdyti šį scenarijų, naudosime šią komandą -
./scriptname.sh
Čia yra terminalo apvalkalo vaizdinis vaizdas, įvykdžius aukščiau nurodytas komandas:
Čia scenarijaus failo pavadinimas yra gfg.sh.
Dabar taip pat galime rašyti sudėtingesnes komandas naudodami Bash Scripts. Toliau pateikiamas pavyzdys, kuriame naudojame sąlygos teiginį –
Scenarijaus pavyzdys:
#!/bin/bash Age=17 if [ '$Age' -ge 18 ]; then echo 'You can vote' else echo 'You cannot vote' fi
Išvestis:
You cannot vote
Čia pateikiamas terminalo apvalkalo vaizdinis vaizdas, įvykdžius aukščiau pateiktą scenarijų taip:
Aukščiau pateiktu būdu galime vykdyti kelias Bash komandas vienu metu.
Dabar pažvelkime į kitas svarbias sąvokas, susijusias su „Bash Scripting“.
Failų pavadinimai ir leidimai
Aukščiau pateiktame pavyzdyje failą išsaugojome naudodami gfg.sh vardą ir taip pat suteikė leidimą vykdyti chmod komandą. Dabar supraskime, kodėl tai padarėme.
Rašydami bash scenarijus turėtume išsaugoti failą su plėtiniu .sh, kad Linux sistema galėtų jį vykdyti. Kai pirmą kartą sukuriame failą su plėtiniu .sh, jis neturi jokio vykdymo leidimo ir be vykdymo leidimo scenarijus neveiks. Taigi, turėtume suteikti jam leidimą vykdyti naudodami chmod komandą.
Bash scenarijaus failo pavadinimas gali būti bet koks, išskyrus susitarimą, scenarijaus failui pavadinti rekomenduojama naudoti didžiąsias ir mažąsias raides ( my_bash_script.sh ) arba brūkšnelius ( my-bash-script.sh ).
Kintamieji
Bash scenarijuose galime naudoti kintamuosius. Žemiau yra pavyzdinė programa, skirta suprasti kintamųjų naudojimą Bash scenarijuose.
Scenarijaus pavyzdys:
Name='SATYAJIT GHOSH' Age=20 echo 'The name is $Name and Age is $Age'
Kintamųjų išvestis:
The name is SATYAJIT GHOSH and Age is 20
Taigi, čia yra deklaruoti du kintamieji vardas ir dar vienas yra Amžius. Šie kintamieji pasiekiami naudojant $Name ir $Age. Tai reiškia, kad bash scenarijuje galime deklaruoti kintamąjį naudodami VariableName=Vertė ir gali jį pasiekti naudodami $VariableName. Čia pateikiamas terminalo apvalkalo vaizdinis vaizdas, įvykdžius aukščiau pateiktą scenarijų taip:
„Bash Scripting“ yra dviejų tipų kintamieji. Paprastai, jei kintamasis yra deklaruojamas funkcijos viduje, tada jis paprastai yra a vietinis kintamasis o jei deklaruojama už jos ribų, tai yra a pasaulinis kintamasis . Bash scenarijaus atveju ši sąvoka yra šiek tiek kitokia, čia bet koks kintamasis, nesvarbu, ar jis parašytas funkcijos viduje, ar už funkcijos ribų, pagal nutylėjimą yra visuotinis kintamasis. Jei norime sukurti vietinį kintamąjį, turime naudoti raktinį žodį local.
Pastaba: Geriausia funkcijoje visada naudoti vietinį kintamąjį, kad būtų išvengta nereikalingos painiavos.
To paties pavyzdys pateiktas žemiau –
Scenarijaus pavyzdys:
#!/bin/bash var1='Apple' #global variable myfun(){ local var2='Banana' #local variable var3='Cherry' #global variable echo 'The name of first fruit is $var1' echo 'The name of second fruit is $var2' } myfun #calling function echo 'The name of first fruit is $var1' #trying to access local variable echo 'The name of second fruit is $var2' echo 'The name of third fruit is $var3' Vietinių ir pasaulinių kintamųjų išvestis:
The name of first fruit is Apple The name of second fruit is Banana The name of first fruit is Apple The name of second fruit is The name of third fruit is Cherry
Šiame aukščiau pateiktame pavyzdyje var2 yra vietinis kintamasis, todėl kai pasiekiame jį iš funkcijos, jis veikia gerai, bet kai bandome pasiekti jį už funkcijos ribų, išvestyje pateikiamas tuščias rezultatas.
Kita vertus, skirtingai nuo programavimo kalbų, nors var3 yra apibrėžtas funkcijos viduje, jis vis tiek veikia kaip visuotinis kintamasis ir jį galima pasiekti už funkcijos ribų. Žemiau pateikiamas terminalo apvalkalo vaizdas po scenarijaus vykdymo -
Įvestis ir išvestis
Įvestis ir išvestis yra pagrindinės apvalkalo scenarijų sudarymo sąvokos. Scenarijus gali turėti vieną ar daugiau įvesties, taip pat gali sukurti nulį arba daug išėjimų. Tai netgi gali sukelti tam tikrų klaidų. Supraskime tai pavyzdžiu -
Scenarijaus pavyzdys:
echo 'Enter filename' read filename if [ -e $filename ] then echo '$filename is exits on the directory' cat $filename else cat>$filename echo 'Failas sukurtas' fi
Įvesties ir išvesties išvestis:
Pirmas kartas:
Enter filename geeks.txt Hello Geek File created
Antrą kartą:
Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek
Taigi šiame aukščiau pateiktame pavyzdyje pirmą kartą scenarijus negalėjo rasti jokio failo tokiu pavadinimu, o kitas blokas bus vykdomas. Jis sukūrė failą ir įdėjo kai kuriuos duomenis į tą failą. Kai paleidžiame jį antrą kartą tuo pačiu failo pavadinimu, jis suranda failą. Taigi, ar vykdomas if blokas ir rodomas failo turinys. Failo turinio skaitymas įvedamas, o pirmą kartą duomenų įdėjimas į failą laikomas išvestimi. Čia mes panaudojome > turiniui saugoti faile. The > peradresavimui naudojamas žymėjimas stdout į failą. Kita vertus, galime naudoti 2> žymėjimas peradresuoti stderr ir &> peradresuoti ir stdout, ir stderr.
Žemiau pateikiamas terminalo apvalkalo vaizdinis vaizdas, įvykdžius šį scenarijų -
Funkcijos
Programavime funkcija yra kodo blokas, kuris atlieka kai kurias užduotis ir gali būti iškviestas kelis kartus, norint atlikti užduotis. Paprasčiausias funkcijos naudojimo Bash scenarijuose pavyzdys gali būti pateiktas taip:
Scenarijaus pavyzdys:
#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction Funkcijų išvestis:
Hello World from techcodeview.com
Aukščiau pateiktame pavyzdyje parodyta funkcija, kuri iškviečia ką nors spausdinti.
Taigi pagrindinė „Bash“ scenarijaus funkcijų rašymo sintaksė bus –
Funkcijų sintaksė:
#for defining function_name(){ commands ..... } function_name # for calling Be to, mes taip pat galime turėti funkcijas su perduodamais argumentais ir grąžinimo reikšmėmis.
Sprendimų priėmimas
Programavime sprendimų priėmimas yra viena iš svarbių sąvokų. Programuotojas pateikia vieną ar daugiau sąlygų kodo bloko vykdymui. Jei sąlygos tenkinamos, tas kodų blokas tik vykdomas.
Shell scenarijuose naudojami dviejų tipų sprendimų priėmimo teiginiai. Jie yra -
1. Jei kitaip:
Jei kitaip teiginys yra sąlyginis teiginys. Jis gali būti naudojamas dviem skirtingiems kodams vykdyti, atsižvelgiant į tai, ar nurodyta sąlyga yra įvykdyta, ar ne.
Jei-else teiginyje yra keletas veislių. Jie yra -
- jei-fi
- jei-kitaip-fi
- jei-elif-else-fi
- įdėtas if-else
Paprasčiausio sintaksė bus tokia:
If-else teiginio sintaksė:
if [ expression ]; then statements fi
Scenarijaus pavyzdys:
Name='Satyajit' if [ '$Name' = 'Satyajit' ]; then echo 'His name is Satyajit. It is true.' fi
Jei-else teiginio išvestis:
His name is Satyajit. It is true.
Aukščiau pateiktame pavyzdyje sąlygos tikrinimo metu pavadinimas sutampa ir sąlyga tampa teisinga. Taigi, kodo blokas, esantis bloke if, vykdomas. Jei pavadinimas nesutampa, išvestis nebus. Žemiau pateikiamas terminalo apvalkalo vaizdinis vaizdas, įvykdžius šį scenarijų -
2. Case-sac pareiškimas:
Case-sac iš esmės veikia taip pat, kaip ir programavimo jungiklio teiginys. Kartais, jei turime patikrinti kelias sąlygas, tai gali būti sudėtinga naudojant if teiginius. Tais momentais galime naudoti „case-sac“ teiginį. Sintaksė bus -
Didžiosios ir mažosios raidės sakinio sintaksė:
case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac
Scenarijaus pavyzdys:
Name='Satyajit' case '$Name' in #case 1 'Rajib') echo 'Profession : Software Engineer' ;; #case 2 'Vikas') echo 'Profession : Web Developer' ;; #case 3 'Satyajit') echo 'Profession : Technical Content Writer' ;; esac
Case-sac pareiškimo išvestis:
Profession : Technical Content Writer
Aukščiau pateiktame pavyzdyje „case-sac“ sakinys įvykdė teiginį, kuris yra suderinto modelio „Vardas“ dalis. Žemiau pateikiamas terminalo apvalkalo vaizdinis vaizdas, įvykdžius šį scenarijų -
Stygų ir skaičių palyginimai
Eilučių palyginimas reiškia, kad apvalkalo scenarijuose galime priimti sprendimus lygindami ir eilutes. Čia yra aprašomoji lentelė su visais operatoriais -
| operatorius | apibūdinimas |
|---|---|
| == | Grąžina tiesa, jei eilutės yra lygios |
| != | Grąžina tiesa, jei eilutės nėra lygios |
| -n | Grąžina tiesa, jei tikrinama eilutė nėra nulinė |
| -Su | Grąžina tiesa, jei tikrinama eilutė yra nulinė |
Aritmetiniai operatoriai naudojami aritmetinėms sąlygoms patikrinti. Kaip mažiau nei, didesnis nei, lygus ir tt Čia yra aprašomoji lentelė su visais operatoriais –
| operatorius | apibūdinimas |
|---|---|
| -ekv | Lygus |
| -ge | Didesnis nei arba lygus |
| -gt | Geresnis negu |
| - | Mažiau nei arba lygus |
| -lt | Mažiau nei |
| - yra | Nėra lygus |
Žemiau yra paprastas to paties pavyzdys -
Scenarijaus pavyzdys:
if [ 10 -eq 10 ];then echo 'Equal' fi if [ 'Geeks' == 'Geeks' ]; then echo 'same' #output else echo 'not same' fi
Eilučių ir skaitinių palyginimų išvestis:
Equal same
Šiame pavyzdyje pirmasis (-eq ) yra skaitinis palyginimas, kuris tikrina lygybę. Antrasis (== ) taip pat yra lygybės patikrinimas, bet eilutėse. Žemiau pateikiamas terminalo apvalkalo vaizdinis vaizdas, įvykdžius šį scenarijų -
Daugiau apie šią koncepciją sužinosime kituose straipsniuose.
Išvada
Šiame straipsnyje aptariame Bash scenarijus, kurie atlieka gyvybiškai svarbų vaidmenį automatizuojant užduotis Linux aplinkoje. Kaip komandų eilutės vertėjas, „Bash“ siūlo kūrėjams paprastumą ir lengvą naudojimą kuriant scenarijus, kurie supaprastina įprastas operacijas, manipuliuoja failais ir atlieka sudėtingas užduotis. Nors „Bash“ scenarijai gali padidinti produktyvumą vengdami pasikartojančių veiksmų ir efektyviai vykdydami komandų sekas, juose taip pat reikia atsižvelgti į tokius dalykus kaip leidimų valdymas, kintamųjų tvarkymas ir sprendimų priėmimo struktūrų įgyvendinimas. Įvaldydami Bash scenarijus, vartotojai gali panaudoti jo galią optimizuoti savo darbo eigą ir pagerinti sistemos administravimo užduotis Linux platformose.