Bash Scripting – Uvod v Bash in Bash Scripting
Bash je tolmač ukazne vrstice ali Unix Shell in se pogosto uporablja v operacijskem sistemu GNU/Linux. Napisal jo je Brian Jhan Fox. Uporablja se kot privzeta prijavna lupina za večino distribucij Linuxa. Skriptiranje se uporablja za avtomatizacijo izvajanja nalog, tako da jih ljudem ni treba izvajati posamično. Skriptiranje Bash je odličen način za avtomatizacijo različnih vrst opravil v sistemu. Razvijalci se lahko izognejo izvajanju ponavljajočih se nalog z uporabo bash skriptov.
Skript bash podpira spremenljivke, pogojne stavke in zanke tako kot programski jeziki. Spodaj je nekaj aplikacij Bash Scripts –
Kazalo
- Uporaba skriptov Bash:
- Prednosti Bash skriptov:
- Kako napisati skripte Bash?
- Imena datotek in dovoljenja
- Spremenljivke
- Vhod in izhod
- Funkcije
- Odločanje
- Primerjave nizov in števil
Uporaba skriptov Bash:
- Manipuliranje datotek
- Izvajanje rutinskih nalog, kot je operacija varnostnega kopiranja
- Avtomatizacija
Prednosti uporabe skriptov Bash so navedene spodaj –
Prednosti Bash skriptov:
- Preprosto je.
- Pomaga pri izogibanju ponavljajočim se nalogam
- Enostaven za uporabo
- Pogosto izvajana opravila je mogoče avtomatizirati
- Zaporedje ukazov je mogoče zagnati kot en sam ukaz.
Slabosti skriptov Bash so navedene spodaj –
Slabosti Bash skriptov:
- Vsaka napaka pri pisanju je lahko draga.
- Za skoraj vsak izveden ukaz lupine se sproži nov postopek
- Počasna hitrost izvajanja
- Težave z združljivostjo med različnimi platformami
Kako napisati skripte Bash?
Za pisanje Bash skripta bomo sledili korakom –
- Najprej bomo ustvarili datoteko s pripono .sh.
- Nato bomo zapisali bash skripte znotraj njega
- Po tem bomo izdali dovoljenje za izvedbo.
Za ustvarjanje in pisanje datoteke s pripono .sh lahko uporabimo gedit urejevalnik besedil. Ukaz zanj bo –
gedit scriptname.sh
Prva vrstica naše skriptne datoteke bo –
#!/bin/bash
To bo sistemu povedalo, naj za izvajanje uporabi Bash. Potem lahko pišemo lastne scenarije.
Zapišimo preprosto skripto, ki bo natisnila nekaj vrstic v terminalu. Koda zanj bo –
#!/bin/bash echo 'Hello, techcodeview.com'
Zdaj bomo shranili datoteko in ji zagotovili dovoljenje za izvajanje. Če želite to narediti, uporabite naslednji ukaz –
chmod +x scriptname.sh
Za izvedbo naslednjega skripta bomo uporabili naslednji ukaz –
./scriptname.sh
Tukaj je slikovna upodobitev lupine terminala po izvedbi zgornjih ukazov, kot sledi:
Tukaj je ime skriptne datoteke gfg.sh.
Zdaj lahko pišemo tudi bolj zapletene ukaze z uporabo Bash skriptov. Tukaj je spodnji primer, v katerem uporabljamo izjavo o pogoju –
Primer skripta:
#!/bin/bash Age=17 if [ '$Age' -ge 18 ]; then echo 'You can vote' else echo 'You cannot vote' fi
Izhod:
You cannot vote
Tukaj je slikovna upodobitev lupine terminala po izvedbi zgornjega skripta, kot sledi:
Na zgornji način lahko izvedemo več ukazov Bash hkrati.
Zdaj pa poglejmo druge pomembne koncepte, povezane s skriptiranjem Bash.
Imena datotek in dovoljenja
V zgornjem primeru smo datoteko shranili z uporabo gfg.sh ime in tudi dovoljenje za izvajanje z uporabo chmod ukaz. Zdaj pa poglejmo, zakaj smo to storili.
Med pisanjem bash skriptov moramo našo datoteko shraniti s pripono .sh, da jo lahko sistem Linux izvede. Ko prvič ustvarimo datoteko s pripono .sh, ta nima nobenega dovoljenja za izvajanje in brez dovoljenja za izvajanje skript ne bo deloval. Torej bi mu morali zagotoviti dovoljenje za izvajanje z uporabo chmod ukaz.
Ime datoteke skripta bash je lahko poljubno, vendar je po dogovoru priporočljiva uporaba velikih in malih črk ( my_bash_script.sh ) ali vezajev ( my-bash-script.sh ) za poimenovanje datoteke skripta.
Spremenljivke
Spremenljivke lahko uporabimo v skriptih bash. Spodaj je vzorčni program za razumevanje uporabe spremenljivk v skriptih Bash.
Primer skripta:
Name='SATYAJIT GHOSH' Age=20 echo 'The name is $Name and Age is $Age'
Izhod spremenljivk:
The name is SATYAJIT GHOSH and Age is 20
Torej, tukaj sta deklarirani dve spremenljivki Ime in še ena je Starost. Te spremenljivke so dostopne z $Name in $Age. To pomeni, da lahko deklariramo spremenljivko v skriptu bash z uporabo VariableName=Vrednost in lahko do njega dostopate z uporabo $VariableName. Tukaj je slikovna upodobitev lupine terminala po izvedbi zgornjega skripta, kot sledi:
Znotraj Bash Scripting sta prisotni dve vrsti spremenljivk. Če je spremenljivka deklarirana znotraj funkcije, je običajno a lokalna spremenljivka in če je deklarirano zunaj, je a globalna spremenljivka . V primeru skripta bash je ta koncept nekoliko drugačen, tukaj je katera koli spremenljivka, ne glede na to, ali je privzeto zapisana znotraj funkcije ali zunaj nje, globalna spremenljivka. Če želimo ustvariti lokalno spremenljivko, moramo uporabiti ključno besedo local.
Opomba: Najboljša praksa je, da znotraj funkcije vedno uporabite lokalno spremenljivko, da se izognete kakršni koli nepotrebni zmedi.
Primer istega je podan spodaj –
Primer skripta:
#!/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' Izhod lokalnih in globalnih spremenljivk:
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
V tem zgornjem primeru je var2 lokalna spremenljivka, tako da, ko do nje dostopamo iz funkcije, deluje dobro, ko pa poskušamo dostopati do nje zunaj funkcije, nam v izhodu da prazen rezultat.
Po drugi strani pa za razliko od programskih jezikov, čeprav je var3 definiran znotraj funkcije, še vedno deluje kot globalna spremenljivka in je do nje mogoče dostopati zunaj funkcije. Spodaj je prikaz lupine terminala po izvedbi skripta –
Vhod in izhod
Vnos in izhod sta temeljna pojma za skriptno lupino. Skript lahko sprejme enega ali več vhodov in lahko ustvari nič ali več izhodov. Lahko povzroči celo nekaj napak. Razumejmo to s primerom -
Primer skripta:
echo 'Enter filename' read filename if [ -e $filename ] then echo '$filename is exits on the directory' cat $filename else cat>$filename echo 'Datoteka ustvarjena' fi
Izhod vnosa in izhoda:
Prvič:
Enter filename geeks.txt Hello Geek File created
Drugič:
Enter filename geeks.txt geeks.txt is exits on the directory Hello Geek
Torej, v tem zgornjem primeru prvič skript ni mogel najti nobene datoteke s tem imenom datoteke in blok else se izvede. Ustvaril je datoteko in vanjo vnesel nekaj podatkov. Ko ga drugič zaženemo z istim imenom datoteke, najde datoteko. Torej, ali se blok if izvede in prikaže vsebino datoteke. Branje vsebine datoteke je vnos, prvi vnos podatkov v datoteko pa se šteje za izhod. Tukaj smo uporabili > za shranjevanje vsebine v datoteko. The > notacija se uporablja za preusmeritev stdout v datoteko. Po drugi strani pa lahko uporabimo 2> zapis za preusmeritev stderr in &> za preusmeritev tako stdout kot stderr.
Spodaj je slikovna upodobitev lupine terminala po izvedbi naslednjega skripta –
Funkcije
V programiranju je funkcija blok kode, ki izvaja nekatere naloge in jo je mogoče večkrat poklicati za izvajanje nalog. Najenostavnejši primer uporabe funkcije v skriptnem zapisu Bash lahko podamo kot –
Primer skripta:
#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction Izhod funkcij:
Hello World from techcodeview.com
Zgornji primer prikazuje funkcijo, ki ob klicu nekaj natisne.
Osnovna sintaksa za pisanje funkcij v skriptu Bash bo torej –
Sintaksa funkcij:
#for defining function_name(){ commands ..... } function_name # for calling Poleg tega imamo lahko tudi funkcije s posredovanjem argumentov in s povratnimi vrednostmi.
Odločanje
V programiranju je odločanje eden izmed pomembnih konceptov. Programer zagotovi enega ali več pogojev za izvedbo bloka kode. Če so pogoji izpolnjeni, se ta blok kod le izvede.
Znotraj skriptne lupine se uporabljata dve vrsti stavkov za odločanje. so –
1. Izjava Če-drugače:
Stavek if else je pogojni stavek. Uporablja se lahko za izvajanje dveh različnih kod glede na to, ali je dani pogoj izpolnjen ali ne.
V stavku if-else je prisotnih nekaj različic. so –
- če-fi
- če-drugače-fi
- če-elif-drugo-fi
- ugnezdeni if-else
Sintaksa najpreprostejšega bo –
Sintaksa stavka If-else:
if [ expression ]; then statements fi
Primer skripta:
Name='Satyajit' if [ '$Name' = 'Satyajit' ]; then echo 'His name is Satyajit. It is true.' fi
Izhod izjave if-else:
His name is Satyajit. It is true.
V zgornjem primeru se med preverjanjem pogoja ime ujema in pogoj postane resničen. Zato se blok kode, ki je prisoten v bloku if, izvede. V primeru, da se ime ne ujema, ne bo imel izhoda. Spodaj je slikovna upodobitev lupine terminala po izvedbi naslednjega skripta –
2. izjava case-sac:
case-sac v bistvu deluje enako kot stavek switch v programiranju. Včasih, če moramo preveriti več pogojev, se lahko zaplete pri uporabi stavkov if. V teh trenutkih lahko uporabimo stavek case-sac. Sintaksa bo –
Sintaksa stavka case-sac:
case $var in Pattern 1) Statement 1;; Pattern n) Statement n;; esac
Primer skripta:
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
Izhod izjave case-sac:
Profession : Technical Content Writer
V zgornjem primeru je stavek case-sac izvedel stavek, ki je del ujemajočega se vzorca tukaj 'Ime'. Spodaj je slikovna upodobitev lupine terminala po izvedbi naslednjega skripta –
Primerjave nizov in števil
Primerjava nizov pomeni, da lahko v skriptni lupini sprejemamo odločitve tudi s primerjavami znotraj nizov. Tukaj je opisna tabela z vsemi operatorji –
| Operater | Opis |
|---|---|
| == | Vrne true, če sta niza enaka |
| != | Vrne true, če niza nista enaka |
| -n | Vrne true, če niz, ki ga želite preizkusiti, ni nič |
| -Z | Vrne true, če je niz, ki ga želite preizkusiti, nič |
Aritmetični operatorji se uporabljajo za preverjanje aritmetičnih pogojev. Na primer manj kot, večje od, enako itd. Tukaj je opisna tabela z vsemi operatorji –
| Operater | Opis |
|---|---|
| -ekv | Enakopravni |
| -ge | Večje od ali enako |
| -gt | Večji kot |
| - | Manj kot ali enako |
| -Lt | Manj kot |
| - je | Ni enako |
Spodaj je preprost primer istega –
Primer skripta:
if [ 10 -eq 10 ];then echo 'Equal' fi if [ 'Geeks' == 'Geeks' ]; then echo 'same' #output else echo 'not same' fi
Izpis nizov in številskih primerjav:
Equal same
V tem primeru je prvi (-eq ) numerična primerjava, ki preverja enakost. Drugi ( == ) je prav tako preverjanje enakosti, vendar v nizih. Spodaj je slikovna upodobitev lupine terminala po izvedbi naslednjega skripta –
Več o tem konceptu bomo izvedeli v naslednjih člankih.
Zaključek
V tem članku razpravljamo o skriptih Bash, ki igrajo ključno vlogo pri avtomatizaciji opravil v okolju Linux. Kot tolmač ukazne vrstice Bash razvijalcem ponuja preprostost in enostavnost uporabe za ustvarjanje skriptov, ki poenostavljajo rutinske operacije, manipulirajo z datotekami in izvajajo zapletene naloge. Medtem ko lahko skripti Bash povečajo produktivnost z izogibanjem ponavljajočim se dejanjem in učinkovitim izvajanjem zaporedij ukazov, vključujejo tudi premisleke, kot so upravljanje dovoljenj, obravnavanje spremenljivk in izvajanje struktur odločanja. Z obvladovanjem skriptiranja Bash lahko uporabniki izkoristijo njegovo moč za optimizacijo svojega delovnega toka in izboljšanje sistemskih skrbniških nalog na platformah Linux.