Bash Scripting – Funkcije
Skript Bash je datoteka z navadnim besedilom. Ta datoteka vsebuje različne ukaze za izvajanje po korakih. Te ukaze je mogoče zapisati neposredno v ukazno vrstico, vendar je z vidika ponovne uporabe koristno shraniti vse medsebojno povezane ukaze za določeno nalogo v eno datoteko. To datoteko lahko uporabimo za izvajanje nabora ukazov enkrat ali večkrat v skladu z našimi zahtevami.
V tem članku bomo razpravljali o uporabi funkcij znotraj Bash Scripting.
V programiranju je funkcija blok kode, ki izvaja nekatere naloge in jo je mogoče večkrat poklicati za izvajanje nalog. Zagotavlja modularnost v programu in zmanjšuje dolžino kode. 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:
Hello World from techcodeview.com
Zgornji primer prikazuje funkcijo, ki ob klicu nekaj natisne. Torej bo osnovna sintaksa za pisanje funkcij v skriptu Bash
Sintaksa:
# for defining function_name(){ commands ..... } function_name # for calling Poleg tega imamo lahko tudi funkcije s posredovanjem argumentov in s povratnimi vrednostmi. Zdaj pa se pogovorimo o njih.
Funkcije s podajanjem argumentov
Funkciji lahko dodamo argumente ali parametre in podatke z njihovo uporabo posredujemo funkciji, tako da lahko funkcija deluje s temi podatki. Pri skriptiranju bash lahko uporabimo naslednjo sintakso za pisanje funkcije s posredovanjem argumentov.
Sintaksa funkcij s podajanjem argumentov:
#for defining function_name(){ ..... parameter_1 = $1 parameter_2 = $2 . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn Med klicem funkcije lahko neposredno posredujemo argumente in lahko do njih dostopamo z $1, $2 ….. $n znotraj funkcije. Oglejmo si primer za bolj jasno razumevanje.
Primer funkcij s podajanjem argumentov:
#!/bin/bash add_two_num(){ local sum=$(($1+$2)) echo sum of $1 and $2 is $sum } add_two_num 2 3 Izhod funkcij s podajanjem argumentov:
sum of 2 and 3 is 5
Zgoraj je skript za seštevanje dveh števil. Tukaj smo podali 2 in 3 kot argumenta. Do njih smo dostopali z $1 in $2 iz funkcije ter izračunali njuno vsoto in jo natisnili na terminal. Spodaj je prikaz lupine terminala po izvedbi skripta –
Funkcije s povratnimi vrednostmi
Povrnjeno vrednost proizvede in vrne klicni metodi funkcija, potem ko zaključi svojo izvedbo. Povratno vrednost je mogoče uporabiti za skupno rabo ustvarjenega rezultata ali statusne kode o tem, ali je bila ena funkcija uspešno izvedena ali ne. V skriptih Bash je vrnjena vrednost dodeljena $? spremenljivka.
Primer istega je podan spodaj –
Primer funkcij s povratnimi vrednostmi:
#!/bin/bash myfun(){ return 7 } myfun echo The return value is $? Izpis funkcij s povratnimi vrednostmi:
The return value is 7
Spodaj je izhod terminalske lupine po izvedbi skripta –
Zdaj pa spremenimo prejšnjo vsoto dvoštevilskega skripta.
Spremenjena koda:
#!/bin/bash myfun(){ return $(($1+$2)) } add_two_num 2 3 echo The sum is $? Izhod spremenjene kode:
The sum is 5
Zdaj je zgornja koda primer uporabe parametrov in vrnjene vrednosti v funkciji skripta Bash.
Spodaj je prikaz lupine terminala po izvedbi skripta –
Obseg spremenljivke
Obseg v programu ali skriptu je območje, kjer obstajajo spremenljivke. Če je spremenljivka deklarirana znotraj funkcije, je na splošno lokalna spremenljivka, če pa je deklarirana zunaj, je 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.
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 obsega spremenljivke:
#!/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 obsega spremenljivke:
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 –
Preglasitvi ukazov
Možno je imeti funkcijo z enakim imenom kot ime ukaza. Koristno je, če želimo zagnati ukaz s posebnimi možnostmi ali želimo imeti njegovo izdajo po meri.
Primer istega je podan spodaj –
Primer preglasitvenih ukazov:
#!/bin/bash #overriding command echo(){ builtin echo 'The name is : $1' } echo 'Satyajit Ghosh' Izhod preglasitvenih ukazov:
The name is : Satyajit Ghosh
V tem primeru smo preglasili odmev ukaz. Zdaj, preden natisne dani niz, doda nizu še nekaj besed in nato natisne. Spodaj je prikaz lupine terminala po izvedbi skripta –