Ett Bash-skript är en vanlig textfil. Den här filen innehåller olika kommandon för steg-för-steg exekvering. Dessa kommandon kan skrivas direkt i kommandoraden, men utifrån en återanvändbarhetssyn är det användbart att lagra alla inbördes relaterade kommandon för en specifik uppgift i en enda fil. Vi kan använda den filen för att utföra uppsättningen kommandon en eller flera gånger enligt våra krav.
Här i den här artikeln kommer vi att diskutera användningen av funktioner inom Bash Scripting.
I programmering är en funktion ett kodblock som utför vissa uppgifter och det kan anropas flera gånger för att utföra uppgifter. Det ger modularitet i programmet och minskar kodlängden. Det enklaste exemplet på användning av funktion i Bash-skript kan ges som –
Exempel på skript:
#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction> Produktion:
Hello World from techcodeview.com>
Exemplet ovan visar en funktion som skriver ut något när det anropas. Så den grundläggande syntaxen för att skriva funktioner i ett Bash-skript kommer att vara
Syntax:
# for defining function_name(){ commands ..... } function_name # for calling> Utöver detta kan vi också ha funktioner med skickande argument och med returvärden. Låt oss nu diskutera dem.
Fungerar med passerande argument
Vi kan lägga till argument eller parametrar till en funktion och skicka data med hjälp av den till funktionen så att funktionen kan agera med dessa data. I bash scripting kan vi använda följande syntax för att skriva en funktion med skickande argument.
Syntax för funktioner med passerande argument:
#for defining function_name(){ ..... parameter_1 = parameter_2 = . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn> Vi kan skicka argumenten direkt medan vi anropar funktionen och kan komma åt dem med , ….. $n inom funktionen. Låt oss se ett exempel för en tydligare förståelse av det.
Exempel på funktioner med godkända argument:
java-strängen innehåller
#!/bin/bash add_two_num(){ local sum=$((+)) echo sum of and is $sum } add_two_num 2 3> Utdata av funktioner med godkända argument:
sum of 2 and 3 is 5>
Ovan är ett skript för att lägga till två siffror. Här har vi tillhandahållit 2 och 3 som argument. Vi har nått dem med och från funktionen och beräknat deras summa och skrivit ut den till terminalen. Nedan visas terminalskalet efter att ha kört skriptet –
Funktioner med returvärden
Ett returvärde produceras och returneras till anropsmetoden av en funktion efter att den har slutfört sin exekvering. Ett returvärde kan användas för att dela det producerade resultatet eller någon statuskod om huruvida en funktion utfördes framgångsrikt eller inte. I Bash-skript tilldelas returvärdet till $? variabel.
Ett exempel på detsamma ges nedan -
Exempel på funktioner med returvärden:
#!/bin/bash myfun(){ return 7 } myfun echo The return value is $?> Utdata av funktioner med returvärden:
The return value is 7>
Nedan är terminalskalets utdata efter att ha kört skriptet -
Låt oss nu ändra den tidigare summan av tvåsiffrigt skript.
Ändrad kod:
#!/bin/bash myfun(){ return $((+)) } add_two_num 2 3 echo The sum is $?> Utmatning av modifierad kod:
The sum is 5>
Nu är ovanstående kod ett exempel på att använda både parametrar och returvärde i en Bash-skriptfunktion.
Nedan visas terminalskalet efter att ha kört skriptet –
Variabelt omfattning
Omfattning i ett program eller skript är en region där variablerna har sin existens. Om en variabel deklareras inuti en funktion är det i allmänhet en lokal variabel och om den deklareras utanför är det en global variabel. I fallet med ett bash-skript är detta koncept lite annorlunda, här är vilken variabel som helst, oavsett om den är skriven inuti en funktion eller utanför en funktion som standard, en global variabel. Om vi vill göra en lokal variabel måste vi använda nyckelordet lokal.
Det är bästa praxis att alltid använda en lokal variabel i en funktion för att undvika onödig förvirring.
Ett exempel på detsamma ges nedan -
java med swing
Exempel på variabel omfattning:
#!/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'> Utdata av variabelt omfattning:
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>
Här i exemplet ovan är var2 en lokal variabel, så när vi kommer åt den från funktionen går den bra men när vi försöker komma åt den utanför funktionen ger den oss ett tomt resultat i utdata.
Å andra sidan, till skillnad från programmeringsspråk, även om var3 är definierad i en funktion fungerar den fortfarande som en global variabel och den kan nås utanför funktionen. Nedan visas terminalskalet efter att ha kört skriptet –
Åsidosättande kommandon
Det är möjligt att ha en funktion med samma namn som ett kommando. Det är användbart om vi vill köra ett kommando med specifika alternativ eller vill ha en anpassad utgåva av det.
Ett exempel på detsamma ges nedan -
Exempel på åsidosättande kommandon:
#!/bin/bash #overriding command echo(){ builtin echo 'The name is : ' } echo 'Satyajit Ghosh'> Utmatning av överordnade kommandon:
The name is : Satyajit Ghosh>
Här i det här exemplet har vi åsidosatt eko kommando. Nu innan du skriver ut den givna strängen, lägger den till strängen med några fler ord och skrivs sedan ut. Nedan visas terminalskalet efter att ha kört skriptet –