Bash-scripting – Functies

Bash-scripting – Functies

Een Bash-script is een tekstbestand zonder opmaak. Dit bestand bevat verschillende opdrachten voor stapsgewijze uitvoering. Deze opdrachten kunnen rechtstreeks in de opdrachtregel worden geschreven, maar vanuit het oogpunt van herbruikbaarheid is het nuttig om alle onderling gerelateerde opdrachten voor een specifieke taak in één bestand op te slaan. We kunnen dat bestand gebruiken om de reeks opdrachten een of meerdere keren uit te voeren, afhankelijk van onze vereisten.

Hier in dit artikel gaan we het gebruik van functies binnen Bash Scripting bespreken.

Bij het programmeren is een functie een codeblok dat bepaalde taken uitvoert en meerdere keren kan worden aangeroepen voor het uitvoeren van taken. Het zorgt voor modulariteit in het programma en reduceert de codelengte. Het eenvoudigste voorbeeld van het gebruik van een functie in Bash-scripting kan worden gegeven als:

Voorbeeldscript:

#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction 

Uitgang:

Hello World from techcodeview.com 

Het bovenstaande voorbeeld toont een functie die iets afdrukt wanneer deze wordt aangeroepen. De basissyntaxis voor het schrijven van functies binnen een Bash-script zal dus zijn

Syntaxis:

# for defining function_name(){ commands ..... } function_name # for calling 

Daarnaast kunnen we ook functies hebben met het doorgeven van argumenten en met retourwaarden. Laten we ze nu bespreken.

Functies met passerende argumenten

We kunnen argumenten of parameters aan een functie toevoegen en gegevens doorgeven aan de functie, zodat de functie met die gegevens kan handelen. Bij bash-scripting kunnen we de volgende syntaxis gebruiken voor het schrijven van een functie met passerende argumenten.

Syntaxis van functies met passerende argumenten:

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

We kunnen de argumenten direct doorgeven tijdens het aanroepen van de functie en hebben er toegang toe $1, $2 ….. $n binnen de functie. Laten we een voorbeeld bekijken voor een beter begrip ervan.

Voorbeeld van functies met passerende argumenten:

#!/bin/bash add_two_num(){ local sum=$(($1+$2)) echo sum of $1 and $2 is $sum } add_two_num 2 3 

Uitvoer van functies met passerende argumenten:

sum of 2 and 3 is 5 

Hierboven ziet u een script voor het toevoegen van twee getallen. Hier hebben we 2 en 3 als argumenten gegeven. We hebben ze benaderd met behulp van $1 en $2 uit de functie, hebben hun som berekend en naar de terminal afgedrukt. Hieronder ziet u de terminalshell-afbeelding na het uitvoeren van het script -

Uitvoer van functies met passerende argumenten

Functies met retourwaarden

Er wordt een retourwaarde geproduceerd en door een functie teruggestuurd naar de aanroepende methode nadat de uitvoering ervan is voltooid. Een retourwaarde kan worden gebruikt om het geproduceerde resultaat of een statuscode te delen over de vraag of een functie succesvol is uitgevoerd of niet. Bij Bash-scripting wordt de retourwaarde toegewezen aan de $? variabel.

Een voorbeeld hiervan wordt hieronder gegeven –

Voorbeeld van functies met retourwaarden:

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

Uitvoer van functies met retourwaarden:

The return value is 7 

Hieronder vindt u de terminalshell-uitvoer na het uitvoeren van het script -

Uitvoer van functies met retourwaarden

Laten we nu de eerdere som van het tweecijferige script wijzigen.

Gewijzigde code:

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

Uitvoer van gewijzigde code:

The sum is 5 

De bovenstaande code is nu een voorbeeld van het gebruik van zowel parameters als de retourwaarde in een Bash-scriptfunctie.

Hieronder ziet u de terminalshell-afbeelding na het uitvoeren van het script -

Uitvoer van gewijzigde code

Variabel bereik

Bereik in een programma of script is een regio waar de variabelen bestaan. Als een variabele binnen een functie wordt gedeclareerd, is het doorgaans een lokale variabele en als deze buiten een functie wordt gedeclareerd, is het een globale variabele. In het geval van een bash-script is dit concept een beetje anders; hier is elke variabele, ongeacht of deze standaard binnen een functie of buiten een functie is geschreven, een globale variabele. Als we een lokale variabele willen maken, moeten we het trefwoord local gebruiken.

Het is het beste om altijd een lokale variabele binnen een functie te gebruiken om onnodige verwarring te voorkomen.

Een voorbeeld hiervan wordt hieronder gegeven –

Voorbeeld van variabele reikwijdte:

#!/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' 

Uitvoer van variabele reikwijdte:

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 

Hier in dit voorbeeld hierboven is var2 een lokale variabele, dus als we er toegang toe krijgen vanuit de functie, gaat het prima, maar als we er buiten de functie toegang toe proberen te krijgen, geeft het ons een leeg resultaat in de uitvoer.

Aan de andere kant, in tegenstelling tot programmeertalen, fungeert var3, ook al is het binnen een functie gedefinieerd, nog steeds als een globale variabele en is het toegankelijk buiten de functie. Hieronder ziet u de terminalshell-afbeelding na het uitvoeren van het script -

Uitvoer van variabele reikwijdte

Commando's overschrijven

Het is mogelijk om een ​​functie te hebben met dezelfde naam als die van een commando. Het is handig als we een opdracht met specifieke opties willen uitvoeren of er een aangepaste editie van willen hebben.

Een voorbeeld hiervan wordt hieronder gegeven –

Voorbeeld van het overschrijven van opdrachten:

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

Uitvoer van overschrijvende opdrachten:

The name is : Satyajit Ghosh 

In dit voorbeeld hebben we de echo commando. Voordat de gegeven string wordt afgedrukt, wordt er nog een aantal woorden aan de string toegevoegd en vervolgens afgedrukt. Hieronder ziet u de terminalshell-afbeelding na het uitvoeren van het script -

Uitvoer van overschrijvende opdrachten