logo

„Bash Scripting“ – funkcijos

„Bash“ scenarijus yra paprasto teksto failas. Šiame faile yra skirtingų komandų, skirtų žingsnis po žingsnio vykdyti. Šios komandos gali būti įrašytos tiesiai į komandų eilutę, tačiau, atsižvelgiant į pakartotinio naudojimo suvokimą, naudinga visas tarpusavyje susijusias konkrečios užduoties komandas saugoti viename faile. Tą failą galime naudoti komandų rinkiniui vykdyti vieną ar kelis kartus pagal mūsų reikalavimus.

Šiame straipsnyje aptarsime „Bash Scripting“ funkcijų naudojimą.

Programavime funkcija yra kodo blokas, kuris atlieka kai kurias užduotis ir gali būti iškviestas kelis kartus, norint atlikti užduotis. Tai suteikia programos moduliškumą ir sumažina kodo ilgį. 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>

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

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. Dabar aptarkime juos.

Funkcijos su perduodamais argumentais

Prie funkcijos galime pridėti argumentų ar parametrų ir naudodami juos perduoti duomenis funkcijai, kad funkcija galėtų veikti su tais duomenimis. Bash scenarijuose galime naudoti šią sintaksę, norėdami parašyti funkciją su perduodamais argumentais.

Funkcijų su perduodamais argumentais sintaksė:

#for defining function_name(){ ..... parameter_1 =  parameter_2 =  . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn>

Mes galime tiesiogiai perduoti argumentus iškviesdami funkciją ir pasiekti juos naudodami 1 USD, 2 USD … n funkcijos viduje. Pažiūrėkime pavyzdį, kad būtų aiškiau tai suprasti.

Funkcijų su perduodamais argumentais pavyzdys:

alfa beta genėjimas
#!/bin/bash add_two_num(){ local sum=$((+)) echo sum of  and  is $sum } add_two_num 2 3>

Funkcijų su perduodamais argumentais išvestis:

sum of 2 and 3 is 5>

Aukščiau yra dviejų skaičių pridėjimo scenarijus. Čia kaip argumentus pateikėme 2 ir 3. Mes juos pasiekėme naudodami ir iš funkcijos, apskaičiavome jų sumą ir išspausdinome ją į terminalą. Žemiau pateikiamas terminalo apvalkalo vaizdas po scenarijaus vykdymo -

Funkcijų išvestis su perduodamais argumentais

Funkcijos su grąžinimo reikšmėmis

Grąžinama reikšmė sukuriama ir grąžinama į iškvietimo metodą funkcija, kai ji baigia vykdyti. Grąžinama vertė gali būti naudojama norint pasidalyti gautu rezultatu arba tam tikru būsenos kodu apie tai, ar viena funkcija buvo sėkmingai įvykdyta, ar ne. „Bash“ scenarijuose grąžinamoji vertė priskiriama $? kintamasis.

To paties pavyzdys pateiktas žemiau –

Funkcijų su grąžinimo reikšmėmis pavyzdys:

#!/bin/bash myfun(){ return 7 } myfun echo The return value is $?>

Funkcijų su grįžtamomis reikšmėmis išvestis:

The return value is 7>

Žemiau yra terminalo apvalkalo išvestis po scenarijaus vykdymo -

Funkcijų su grįžtamomis reikšmėmis išvestis

Dabar pakeiskime ankstesnę dviejų skaičių scenarijaus sumą.

Modifikuotas kodas:

#!/bin/bash myfun(){ return $((+)) } add_two_num 2 3 echo The sum is $?>

Modifikuoto kodo išvestis:

The sum is 5>

Dabar aukščiau pateiktas kodas yra parametrų ir grąžinimo vertės naudojimo Bash scenarijaus funkcijoje pavyzdys.

Žemiau pateikiamas terminalo apvalkalo vaizdas po scenarijaus vykdymo -

Modifikuoto kodo išvestis

Kintamoji apimtis

Programos ar scenarijaus taikymo sritis yra sritis, kurioje egzistuoja kintamieji. Jei kintamasis deklaruojamas funkcijos viduje, tai paprastai yra vietinis kintamasis, o jei jis deklaruojamas išorėje, tai yra 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.

Geriausia funkcijoje visada naudoti vietinį kintamąjį, kad būtų išvengta nereikalingos painiavos.

To paties pavyzdys pateiktas žemiau –

numpy linspace

Kintamojo apimties 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'>

Kintamojo apimties 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 -

Kintamosios apimties išvestis

Viršančios komandos

Galima turėti funkciją tokiu pačiu pavadinimu kaip ir komandos. Tai naudinga, jei norime paleisti komandą su konkrečiomis parinktimis arba norime turėti pritaikytą jos leidimą.

To paties pavyzdys pateiktas žemiau –

Nepaisančių komandų pavyzdys:

#!/bin/bash #overriding command echo(){ builtin echo 'The name is : ' } echo 'Satyajit Ghosh'>

Nepaisančių komandų išvestis:

The name is : Satyajit Ghosh>

Šiame pavyzdyje mes nepaisėme aidas komandą. Dabar prieš spausdinant nurodytą eilutę ji prideda dar kelis žodžius ir spausdina. Žemiau pateikiamas terminalo apvalkalo vaizdas po scenarijaus vykdymo -

Viršutinių komandų išvestis