Kaip sukurti ir iškviesti funkcijas „Bash“

Trumpas vadovas, kaip sukurti ir iškviesti funkcijas „Bash“.

Funkcija yra daugkartinio naudojimo kodo blokas, naudojamas tam tikram veiksmui atlikti. Naudodamiesi funkcijomis, gauname geresnį moduliškumą ir aukštą kodo pakartotinį naudojimą.

„Bash“ teikia kai kurias įmontuotas funkcijas, tokias kaip echo ir read, bet galime susikurti ir savo funkcijas.




Funkcijos sukūrimas „Bash“

„Bash“ funkcijas galime sukurti dviem būdais:

Vienas iš būdų yra tiesiog naudoti funkcijos pavadinimą, pvz .:


functionName(){ // scope of function }

Kompaktiška versija:



functionName(){ echo 'hello'; }

Kitas būdas yra deklaruoti funkciją naudojant function raktinis žodis:

function functionName { // scope of function }

Kompaktiška versija:

function functionName { echo 'hello'; }

Atkreipkite dėmesį, kaip mums nereikia () naudojant function raktinis žodis funkcijai sukurti.


Svarbūs pastabos apie „Bash“ funkcijas:

  • Kodas tarp garbanotų petnešų {} yra funkcijos kūnas ir taikymo sritis
  • Kviesdami funkciją, mes tiesiog naudojame funkcijos pavadinimą iš bet kurios vietos bash scenarijuje
  • Funkcija turi būti apibrėžta prieš ją naudojant
  • Naudojant kompaktišką versiją, paskutinėje komandoje turi būti kabliataškis ;

Pavyzdys:

Šis kodas sukuria funkciją, kuri atsispausdina „Hello World“ į konsolę. Vadinamas funkcijos pavadinimas Sveiki :

#!/bin/bash printHello(){
echo 'Hello World!' }


„Bash“ funkcijos iškvietimas

Kaip mes vadiname aukščiau nurodytą funkciją? Viskas, ką jums reikia padaryti savo „bash“ scenarijuje, yra parašyti funkcijos pavadinimą ir ji bus iškviesta.


Pavyzdžiui:

#!/bin/bash printHello(){
echo 'Hello World!' } # Call printHello function from anywhere in the script by writing the name printHello

Išvestis:

'Hello World'

Argumentų perdavimas

Pirmiau nurodyta funkcija printHello() neturi jokių parametrų. Bet kada, kai jį pavadinsime, gauname „Hello World“ išvestį. Bet ką daryti, jei norėtume sukurti bendresnę funkciją? Pavyzdžiui, galime iškviesti funkciją su tam tikru argumentu ir ji atspausdins tai, ką mes jai siunčiame.

Tai galima padaryti dviem būdais.


Pirmiausia galime modifikuoti printHello() funkcija išspausdinti jai perduotus argumentus:

Pavyzdžiui:

#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny World printAny DevQa printAny I love coding!

Išvestis:

Hello World Hello DevQA Hello I

Atkreipkite dėmesį, kaip trečiasis atspausdintas teiginys printAny I love coding! tik išleido „Labas, aš“.


Taip yra todėl, kad mūsų funkcija skirta tik 1 parametrui $1 Žodis „Man patinka koduoti!“ yra iš tikrųjų 3 parametrai.

Jei norėtume visa tai atsispausdinti, aplink tekstą turėtume įdėti kabutes

Pavyzdžiui:

#!/bin/bash printAny(){
echo 'Hello ' $1 } printAny 'I love coding!'

Išvestis:

Hello I love coding

Kitas pavyzdys, kurį galime perduoti ir skaitmenimis:

#!/bin/bash add() {
result=$(($1 + $2))
echo 'Result is: $result' } add 1 2

Išvestis:

Result is: 3

Vertybių grąžinimas

„Bash“ funkcijos taip pat gali grąžinti reikšmes.

Pavyzdžiui:

#!/bin/bash add() {
result=$(($1 + $2)) } add 1 2 echo 'The sum is: '$result

Išvestis:

The sum is: 3

Kitas būdas grąžinti reikšmes iš funkcijos yra priskirti rezultatą kintamajam, kurį galima naudoti esant poreikiui.

Pavyzdžiui:

#!/bin/bash add () { local result=$(($1 + $2)) echo '$result' } result='$(add 1 2)' echo 'The sum is: '$result

Išvestis:

The sum is: 3