Bash skriptovanie – funkcie
Bash skript je obyčajný textový súbor. Tento súbor obsahuje rôzne príkazy na vykonanie krok za krokom. Tieto príkazy je možné zapísať priamo do príkazového riadku, ale z hľadiska opätovnej použiteľnosti je užitočné uložiť všetky vzájomne súvisiace príkazy pre konkrétnu úlohu do jedného súboru. Tento súbor môžeme použiť na vykonanie sady príkazov raz alebo viackrát podľa našich požiadaviek.
Tu v tomto článku budeme diskutovať o použití funkcií v rámci Bash Scripting.
V programovaní je funkcia A blok kódu, ktorý vykonáva niektoré úlohy a môže byť volaný viackrát na vykonávanie úloh. Poskytuje modularitu v programe a znižuje dĺžku kódu. Najjednoduchší príklad použitia funkcie v skriptovaní Bash možno uviesť ako –
Príklad skriptu:
#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction Výkon:
Hello World from techcodeview.com
Vyššie uvedený príklad ukazuje funkciu, ktorá pri volaní niečo vypíše. Takže základná syntax pre písanie funkcií v rámci Bash skriptu bude
Syntax:
# for defining function_name(){ commands ..... } function_name # for calling Okrem toho môžeme mať aj funkcie s odovzdávaním argumentov a s návratovými hodnotami. Teraz o nich poďme diskutovať.
Funkcie s odovzdávajúcimi argumentmi
Do funkcie môžeme pridať argumenty alebo parametre a odovzdať údaje pomocou nich funkcii, aby funkcia mohla s týmito údajmi konať. V bash skriptovaní môžeme použiť nasledujúcu syntax na písanie funkcie s odovzdávaním argumentov.
Syntax funkcií s odovzdávajúcimi argumentmi:
#for defining function_name(){ ..... parameter_1 = $1 parameter_2 = $2 . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn Argumenty môžeme odovzdať priamo pri volaní funkcie a môžeme k nim pristupovať pomocou $ 1, $ 2 .... $ n v rámci funkcie. Pozrime sa na príklad pre jasnejšie pochopenie.
Príklad funkcií s odovzdávajúcimi argumentmi:
#!/bin/bash add_two_num(){ local sum=$(($1+$2)) echo sum of $1 and $2 is $sum } add_two_num 2 3 Výstup funkcií s argumentmi o odovzdaní:
sum of 2 and 3 is 5
Vyššie je skript na sčítanie dvoch čísel. Tu sme poskytli 2 a 3 ako argumenty. Pristúpili sme k nim pomocou funkcie $ 1 a $ 2 a vypočítali sme ich súčet a vytlačili sme ho na terminál. Nižšie je znázornenie shellu terminálu po vykonaní skriptu –
Funkcie s návratovými hodnotami
Funkcia vytvorí návratovú hodnotu a vráti ju volajúcej metóde po dokončení jej vykonania. Návratová hodnota sa môže použiť na zdieľanie vytvoreného výsledku alebo nejakého stavového kódu o tom, či bola jedna funkcia úspešne vykonaná alebo nie. V skriptovaní Bash je návratová hodnota priradená k $? premenlivý.
Príklad toho istého je uvedený nižšie -
Príklad funkcií s návratovými hodnotami:
#!/bin/bash myfun(){ return 7 } myfun echo The return value is $? Výstup funkcií s návratovými hodnotami:
The return value is 7
Nižšie je uvedený výstup shellu terminálu po vykonaní skriptu –
Teraz upravme predchádzajúci súčet dvojčíselného skriptu.
Upravený kód:
#!/bin/bash myfun(){ return $(($1+$2)) } add_two_num 2 3 echo The sum is $? Výstup upraveného kódu:
The sum is 5
Vyššie uvedený kód je teraz príkladom použitia oboch parametrov a návratovej hodnoty vo funkcii skriptu Bash.
Nižšie je znázornenie shellu terminálu po vykonaní skriptu –
Variabilný rozsah
Rozsah v programe alebo skripte je oblasť, v ktorej existujú premenné. Ak je premenná deklarovaná vo funkcii, potom je to vo všeobecnosti lokálna premenná a ak je deklarovaná vonku, potom je to globálna premenná. V prípade bash skriptu je tento koncept trochu iný, tu je akákoľvek premenná, či už je štandardne napísaná vo vnútri funkcie alebo mimo funkcie, globálnou premennou. Ak chceme vytvoriť lokálnu premennú, musíme použiť kľúčové slovo local.
Najlepšou praxou je vždy použiť lokálnu premennú vo funkcii, aby ste sa vyhli zbytočnému zmätku.
Príklad toho istého je uvedený nižšie -
Príklad variabilného rozsahu:
#!/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' Výstup variabilného rozsahu:
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
Tu v tomto vyššie uvedenom príklade je var2 lokálna premenná, takže keď k nej pristupujeme z funkcie, ide to dobre, ale keď sa k nej pokúšame pristupovať mimo funkcie, dáva nám na výstupe prázdny výsledok.
Na druhej strane, na rozdiel od programovacích jazykov, aj keď je var3 definovaný vo funkcii, stále funguje ako globálna premenná a je možné k nej pristupovať mimo funkcie. Nižšie je znázornenie shellu terminálu po vykonaní skriptu –
Prevažujúce príkazy
Je možné mať funkciu s rovnakým názvom ako má príkaz. Je to užitočné, ak chceme spustiť príkaz so špecifickými možnosťami alebo chceme mať jeho prispôsobenú edíciu.
Príklad toho istého je uvedený nižšie -
Príklad prepisujúcich príkazov:
#!/bin/bash #overriding command echo(){ builtin echo 'The name is : $1' } echo 'Satyajit Ghosh' Výstup prepisujúcich príkazov:
The name is : Satyajit Ghosh
Tu v tomto príklade sme prepísali ozvena príkaz. Teraz pred vytlačením daného reťazca pripojí k reťazcu niekoľko ďalších slov a potom vytlačí. Nižšie je znázornenie shellu terminálu po vykonaní skriptu –