Bash Scripting – Funktioner
Et Bash-script er en almindelig tekstfil. Denne fil indeholder forskellige kommandoer til trin-for-trin udførelse. Disse kommandoer kan skrives direkte ind i kommandolinjen, men ud fra en genanvendelighedsopfattelse er det nyttigt at gemme alle de indbyrdes relaterede kommandoer til en specifik opgave i en enkelt fil. Vi kan bruge denne fil til at udføre sættet af kommandoer en eller flere gange i henhold til vores krav.
Her i denne artikel skal vi diskutere brugen af funktioner i Bash Scripting.
I programmering er en funktion en kodeblok, der udfører nogle opgaver, og den kan kaldes flere gange for at udføre opgaver. Det giver modularitet i programmet og reducerer kodelængden. Det enkleste eksempel på brug af funktion i Bash scripting kan gives som –
Eksempel script:
#!/bin/bash #It is a function myFunction () { echo Hello World from techcodeview.com } #function call myFunction Produktion:
Hello World from techcodeview.com
Ovenstående eksempel viser en funktion, der udskriver noget, når det kaldes. Så den grundlæggende syntaks for at skrive funktioner i et Bash Script vil være
Syntaks:
# for defining function_name(){ commands ..... } function_name # for calling Udover dette kan vi også have funktioner med beståede argumenter og med returværdier. Lad os nu diskutere dem.
Funktioner med forbigående argumenter
Vi kan tilføje argumenter eller parametre til en funktion og videregive data ved hjælp af dem til funktionen, så funktionen kan handle med disse data. I bash-scripting kan vi bruge følgende syntaks til at skrive en funktion med videregivelse af argumenter.
Syntaks af funktioner med beståede argumenter:
#for defining function_name(){ ..... parameter_1 = $1 parameter_2 = $2 . . . parameter_n = $n .... commands ..... } #for calling function_name p1 p2 ....pn Vi kan direkte videregive argumenterne, mens vi kalder funktionen og kan få adgang til dem med $1, $2 ….. $n inden for funktionen. Lad os se et eksempel for en mere klar forståelse af det.
Eksempel på funktioner med beståede argumenter:
#!/bin/bash add_two_num(){ local sum=$(($1+$2)) echo sum of $1 and $2 is $sum } add_two_num 2 3 Output af funktioner med beståede argumenter:
sum of 2 and 3 is 5
Ovenfor er et script til at tilføje to tal. Her har vi givet 2 og 3 som argumenter. Vi har tilgået dem ved hjælp af $1 og $2 fra funktionen og beregnet deres sum og udskrevet den til terminalen. Nedenfor er terminal shell-afbildningen efter udførelse af scriptet –
Funktioner med returværdier
En returværdi produceres og returneres til den kaldende metode af en funktion, efter at den har fuldført sin udførelse. En returværdi kan bruges til at dele det producerede resultat eller en statuskode om, hvorvidt en funktion blev udført med succes eller ej. I Bash-scripting tildeles returværdien til $? variabel.
Et eksempel på det samme er givet nedenfor -
Eksempel på funktioner med returværdier:
#!/bin/bash myfun(){ return 7 } myfun echo The return value is $? Output af funktioner med returværdier:
The return value is 7
Nedenfor er terminal shell output efter udførelse af scriptet -
Lad os nu ændre den tidligere sum af scriptet med to tal.
Ændret kode:
#!/bin/bash myfun(){ return $(($1+$2)) } add_two_num 2 3 echo The sum is $? Output af ændret kode:
The sum is 5
Nu er ovenstående kode et eksempel på brug af både parametre og returværdi i en Bash script funktion.
Nedenfor er terminal shell-afbildningen efter udførelse af scriptet –
Variabelt omfang
Omfang i et program eller script er en region, hvor variablerne har deres eksistens. Hvis en variabel er erklæret inde i en funktion, er den generelt en lokal variabel, og hvis den erklæres udenfor, er den en global variabel. I tilfælde af et bash-script er dette koncept en lille smule anderledes, her er enhver variabel, uanset om den er skrevet inde i en funktion eller uden for en funktion, som standard en global variabel. Hvis vi vil lave en lokal variabel, skal vi bruge søgeordet lokal.
Det er bedste praksis altid at bruge en lokal variabel inde i en funktion for at undgå unødvendig forvirring.
Et eksempel på det samme er givet nedenfor -
Eksempel på variabelt omfang:
#!/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' Output af variabelt omfang:
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
Her i ovenstående eksempel er var2 en lokal variabel, så når vi får adgang til den fra funktionen, fungerer den fint, men når vi forsøger at få adgang til den uden for funktionen, giver den os et tomt resultat i outputtet.
På den anden side, i modsætning til programmeringssprog, selvom var3 er defineret i en funktion, fungerer den stadig som en global variabel, og den kan tilgås uden for funktionen. Nedenfor er terminalskal-afbildningen efter udførelse af scriptet -
Tilsidesættende kommandoer
Det er muligt at have en funktion med samme navn som en kommando. Det er nyttigt, hvis vi vil køre en kommando med specifikke muligheder eller ønsker at have en tilpasset udgave af den.
Et eksempel på det samme er givet nedenfor -
Eksempel på tilsidesættende kommandoer:
#!/bin/bash #overriding command echo(){ builtin echo 'The name is : $1' } echo 'Satyajit Ghosh' Output af tilsidesættende kommandoer:
The name is : Satyajit Ghosh
Her i dette eksempel har vi tilsidesat ekko kommando. Nu før den udskriver den givne streng, tilføjer den strengen med nogle flere ord og udskriver derefter. Nedenfor er terminal shell-afbildningen efter udførelse af scriptet –