I det här ämnet har vi visat grunderna för bash-funktioner och hur de fungerar i bash-skalskript.
Funktioner i bash scripting är ett utmärkt alternativ för att återanvända kod. En Bash-funktion kan definieras som en uppsättning kommandon som kan anropas flera gånger inom bash-skriptet. Syftet med funktion i bash är att hjälpa dig att göra dina skript mer läsbara och undvika att skriva samma kod om och om igen. Det tillåter också utvecklarna att bryta en komplicerad och lång kod till små delar som kan anropas när det behövs. Funktioner kan anropas när som helst och upprepade gånger, vilket gör det möjligt för oss att återanvända, optimera och minimera koden.
Följande är några viktiga punkter om bash-funktioner:
- En funktion måste deklareras i skalskriptet innan vi kan använda den.
- Argument kan skickas till funktionerna och nås inuti funktionen som , , etc.
- Lokala variabler kan tilldelas inom funktionen, och omfattningen av sådana variabler kommer bara att vara den specifika funktionen.
- Inbyggda kommandon i Bash-skalet kan åsidosättas med hjälp av funktioner.
Syntax
Syntaxen för att deklarera en bash-funktion kan definieras i två format:
1. Den första metoden börjar med funktionsnamnet, följt av parenteser. Det är den mest föredragna och vanligaste metoden:
function_name () { commands }
Enkelradsversion kan nämnas enligt nedan:
function_name () { commands; }
2. Den andra metoden börjar med det funktionsreserverade ordet, följt av funktionsnamnet:
10 potens av 6
function function_name { commands }
Enkelradsversion kan nämnas enligt nedan:
function function_name { commands; }
Jämfört med de flesta av programmeringsspråken är Bash-funktionerna något begränsade. Låt oss förstå konceptet med hjälp av några exempel:
Exempel: Metod 1
#!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP
Produktion
Welcome to Javatpoint.
Exempel: Metod 2
#!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP
Produktion
Welcome to Javatpoint.
Förbigående argument
Liksom de flesta programmeringsspråk kan vi också skicka argumenten och bearbeta data i bash-funktioner. Vi kan infoga data i funktionen på liknande sätt som att skicka kommandoradsargument till ett bash-skript.
gräns med css
För att skicka valfritt antal argument till bash-funktionen måste vi infoga dem precis efter funktionens namn. Vi måste använda mellanslag mellan funktionsnamn och argument. Det kommer också att vara ett utmärkt val att använda dubbla citattecken runt argumenten för att förhindra felparsning av argumenten med mellanslag i.
Följande är några viktiga punkter om att skicka argument till bash-funktionerna:
- De givna argumenten nås som , , ... $n, motsvarande positionen för argumenten efter funktionens namn.
- Variabeln
hålls reserverad för funktionens namn.I det här ämnet har vi visat grunderna för bash-funktioner och hur de fungerar i bash-skalskript.
Funktioner i bash scripting är ett utmärkt alternativ för att återanvända kod. En Bash-funktion kan definieras som en uppsättning kommandon som kan anropas flera gånger inom bash-skriptet. Syftet med funktion i bash är att hjälpa dig att göra dina skript mer läsbara och undvika att skriva samma kod om och om igen. Det tillåter också utvecklarna att bryta en komplicerad och lång kod till små delar som kan anropas när det behövs. Funktioner kan anropas när som helst och upprepade gånger, vilket gör det möjligt för oss att återanvända, optimera och minimera koden.
Följande är några viktiga punkter om bash-funktioner:
- En funktion måste deklareras i skalskriptet innan vi kan använda den.
- Argument kan skickas till funktionerna och nås inuti funktionen som $1, $2, etc.
- Lokala variabler kan tilldelas inom funktionen, och omfattningen av sådana variabler kommer bara att vara den specifika funktionen.
- Inbyggda kommandon i Bash-skalet kan åsidosättas med hjälp av funktioner.
Syntax
Syntaxen för att deklarera en bash-funktion kan definieras i två format:
1. Den första metoden börjar med funktionsnamnet, följt av parenteser. Det är den mest föredragna och vanligaste metoden:
function_name () { commands }
Enkelradsversion kan nämnas enligt nedan:
function_name () { commands; }
2. Den andra metoden börjar med det funktionsreserverade ordet, följt av funktionsnamnet:
function function_name { commands }
Enkelradsversion kan nämnas enligt nedan:
function function_name { commands; }
Jämfört med de flesta av programmeringsspråken är Bash-funktionerna något begränsade. Låt oss förstå konceptet med hjälp av några exempel:
Exempel: Metod 1
#!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP
Produktion
Welcome to Javatpoint.
Exempel: Metod 2
#!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP
Produktion
Welcome to Javatpoint.
Förbigående argument
Liksom de flesta programmeringsspråk kan vi också skicka argumenten och bearbeta data i bash-funktioner. Vi kan infoga data i funktionen på liknande sätt som att skicka kommandoradsargument till ett bash-skript.
För att skicka valfritt antal argument till bash-funktionen måste vi infoga dem precis efter funktionens namn. Vi måste använda mellanslag mellan funktionsnamn och argument. Det kommer också att vara ett utmärkt val att använda dubbla citattecken runt argumenten för att förhindra felparsning av argumenten med mellanslag i.
Följande är några viktiga punkter om att skicka argument till bash-funktionerna:
- De givna argumenten nås som $1, $2, $3 ... $n, motsvarande positionen för argumenten efter funktionens namn.
- Variabeln $0 hålls reserverad för funktionens namn.
- Variabeln $# används för att hålla antalet positionsargument/parameter som ges till funktionen.
- Variablerna $* och $@ används för att hålla alla argument/parametrar som ges till funktionen.
- När $* används med dubbla citattecken (d.v.s. '$*' ), expanderas den till en enda sträng separerad av mellanslag. Till exempel '$1 $2 $n etc'.
- När $@ används med dubbla citattecken (d.v.s. '$@' ), expanderas den till den separata strängen. Till exempel '$1' '$2' '$n' osv.
- När $* och $# inte används med dubbla citattecken, är båda desamma.
Följande är koden som illustrerar proceduren för hur man skickar argument till funktioner och får åtkomst till argumenten inuti funktionen.
Bash Script
#!/bin/bash #Script to pass and access arguments function_arguments() { echo $1 echo $2 echo $3 echo $4 echo $5 } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.'
Produktion
I det här skriptet har vi lagt till värdena 'Vi', 'välkommen', 'du', 'på' och 'Javatpoint' efter att vi har anropat function_arguments. Dessa värden skickas till funktionsargument som parametrar och lagras i en lokal variabel. Men till skillnad från andra språk, lagrar tolken de överförda värdena i fördefinierade variabler, som sedan namnges enligt sekvensen av passerande parametrar.
Till exempel,
'Vi' ord lagras i variabeln 1 .
'Välkommen' ord lagras i variabeln 2 .
'du' ord lagras i variabeln 3 .
'på' ord lagras i variabeln 4 .
'Javatpoint' ord lagras i variabeln 5 .Variabelt omfattning
Globala variabler definieras som de variabler som kan nås var som helst i skriptet oavsett omfattning. Som standard är alla variabler definierade som globala variabler, även om de är deklarerade inuti funktionen. Vi kan också skapa variabler som en lokal variabel. Lokala variabler kan deklareras inom funktionskroppen med ?local? nyckelord när de tilldelas för första gången. De är endast tillgängliga inom den funktionen. Vi kan skapa lokala variabler med samma namn i olika funktioner. För att lägga till en lokal variabel kan vi använda följande syntax:
local var_name=
För att bättre förstå hur variabelomfånget fungerar i Bash Scripting, kolla in följande exempel:
Bash Script
#!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.'
Produktion
Enligt utdata, om vi ställer in en lokal variabel inom funktionskroppen med samma namn som en befintlig global variabel, kommer den att ha företräde framför den globala variabeln. Globala variabler kan modifieras inom funktionen.
Returvärden
De flesta av programmeringsspråken har konceptet att returnera ett värde för funktionerna. Det betyder att funktionen måste skicka tillbaka data till den ursprungliga anropsplatsen. Till skillnad från funktioner i 'riktiga' programmeringsspråk, ger Bash-funktionen inte stöd för att returnera ett värde när det anropas. Men de tillåter oss att ställa in en returstatus som liknar hur ett program eller kommando avslutas med en utgångsstatus. När en bash-funktion slutförs är dess returvärde statusen för den senast körda satsen i funktionen. Den returnerar 0 för framgångsstatus och icke-noll decimaltal i intervallet 1-255 för misslyckande.
Returstatusen kan indikeras genom att använda nyckelordet 'retur', och den tilldelas variabeln $?. Return-satsen avslutar funktionen och fungerar som funktionens utgångsstatus.
Till exempel, överväg följande kod:
Bash Script
#!/bin/bash #Setting up a return status for a function print_it () { echo Hello $1 return 5 } print_it User print_it Reader echo The previous function returned a value of $?
Produktion
Ett annat bättre alternativ för att returnera ett värde från en funktion är att skicka värdet till stdout använder sig av eko eller printf kommandon, som visas nedan:
Bash Script
#!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet
Produktion
Welcome to Javatpoint.
Åsidosättande kommandon
Vi har ett alternativ att åsidosätta bash-kommandona genom att skapa en funktion med samma namn som kommandot som vi ska åsidosätta. Till exempel, om vi vill åsidosätta kommandot 'echo', måste vi skapa en funktion med namnet 'echo'.
Det här konceptet att åsidosätta bash-kommandona kan vara till hjälp i vissa scenarier som när vi vill använda ett kommando med specifika alternativ. Dessutom, när vi inte gillar att förse hela kommandot med alternativ för flera gånger i skriptet. I sådana fall kan vi åsidosätta det inbyggda bash-kommandot för kommando med alternativ. Låt oss nu förstå konceptet med att åsidosätta kommandon i Bash Shell Scripting med hjälp av några exempel:
Exempel
I det här exemplet har vi åsidosatt kommandot 'echo' och lagt till tidsstämpeln i form av argumentet till kommandot 'eko'.
Bash Script
#!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo $1 } echo 'Welcome to Javatpoint.'
Produktion
Slutsats
I det här ämnet demonstrerade vi om Bash Function. En Bash-funktion betraktas som ett block med återanvändbar kod som utvecklats för att utföra en specifik operation. När det väl är definierat kan det anropas flera gånger i ett skript.
- Variabeln $# används för att hålla antalet positionsargument/parameter som ges till funktionen.
- Variablerna $* och $@ används för att hålla alla argument/parametrar som ges till funktionen.
- När $* används med dubbla citattecken (d.v.s. '$*' ), expanderas den till en enda sträng separerad av mellanslag. Till exempel ' $n etc'.
- När $@ används med dubbla citattecken (d.v.s. '$@' ), expanderas den till den separata strängen. Till exempel '' '' '$n' osv.
- När $* och $# inte används med dubbla citattecken, är båda desamma.
Följande är koden som illustrerar proceduren för hur man skickar argument till funktioner och får åtkomst till argumenten inuti funktionen.
Bash Script
#!/bin/bash #Script to pass and access arguments function_arguments() { echo echo echo echo echo } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.'
Produktion
I det här skriptet har vi lagt till värdena 'Vi', 'välkommen', 'du', 'på' och 'Javatpoint' efter att vi har anropat function_arguments. Dessa värden skickas till funktionsargument som parametrar och lagras i en lokal variabel. Men till skillnad från andra språk, lagrar tolken de överförda värdena i fördefinierade variabler, som sedan namnges enligt sekvensen av passerande parametrar.
Till exempel,
'Vi' ord lagras i variabeln 1 .
'Välkommen' ord lagras i variabeln 2 .
'du' ord lagras i variabeln 3 .
'på' ord lagras i variabeln 4 .
'Javatpoint' ord lagras i variabeln 5 .
Variabelt omfattning
Globala variabler definieras som de variabler som kan nås var som helst i skriptet oavsett omfattning. Som standard är alla variabler definierade som globala variabler, även om de är deklarerade inuti funktionen. Vi kan också skapa variabler som en lokal variabel. Lokala variabler kan deklareras inom funktionskroppen med ?local? nyckelord när de tilldelas för första gången. De är endast tillgängliga inom den funktionen. Vi kan skapa lokala variabler med samma namn i olika funktioner. För att lägga till en lokal variabel kan vi använda följande syntax:
ångra senaste commit
local var_name=
För att bättre förstå hur variabelomfånget fungerar i Bash Scripting, kolla in följande exempel:
Bash Script
#!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.'
Produktion
Enligt utdata, om vi ställer in en lokal variabel inom funktionskroppen med samma namn som en befintlig global variabel, kommer den att ha företräde framför den globala variabeln. Globala variabler kan modifieras inom funktionen.
Returvärden
De flesta av programmeringsspråken har konceptet att returnera ett värde för funktionerna. Det betyder att funktionen måste skicka tillbaka data till den ursprungliga anropsplatsen. Till skillnad från funktioner i 'riktiga' programmeringsspråk, ger Bash-funktionen inte stöd för att returnera ett värde när det anropas. Men de tillåter oss att ställa in en returstatus som liknar hur ett program eller kommando avslutas med en utgångsstatus. När en bash-funktion slutförs är dess returvärde statusen för den senast körda satsen i funktionen. Den returnerar 0 för framgångsstatus och icke-noll decimaltal i intervallet 1-255 för misslyckande.
bourne-igen-skal
Returstatusen kan indikeras genom att använda nyckelordet 'retur', och den tilldelas variabeln $?. Return-satsen avslutar funktionen och fungerar som funktionens utgångsstatus.
Till exempel, överväg följande kod:
Bash Script
#!/bin/bash #Setting up a return status for a function print_it () { echo Hello return 5 } print_it User print_it Reader echo The previous function returned a value of $?
Produktion
Ett annat bättre alternativ för att returnera ett värde från en funktion är att skicka värdet till stdout använder sig av eko eller printf kommandon, som visas nedan:
javascript base64 avkoda
Bash Script
#!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet
Produktion
Welcome to Javatpoint.
Åsidosättande kommandon
Vi har ett alternativ att åsidosätta bash-kommandona genom att skapa en funktion med samma namn som kommandot som vi ska åsidosätta. Till exempel, om vi vill åsidosätta kommandot 'echo', måste vi skapa en funktion med namnet 'echo'.
Det här konceptet att åsidosätta bash-kommandona kan vara till hjälp i vissa scenarier som när vi vill använda ett kommando med specifika alternativ. Dessutom, när vi inte gillar att förse hela kommandot med alternativ för flera gånger i skriptet. I sådana fall kan vi åsidosätta det inbyggda bash-kommandot för kommando med alternativ. Låt oss nu förstå konceptet med att åsidosätta kommandon i Bash Shell Scripting med hjälp av några exempel:
Exempel
I det här exemplet har vi åsidosatt kommandot 'echo' och lagt till tidsstämpeln i form av argumentet till kommandot 'eko'.
Bash Script
#!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo } echo 'Welcome to Javatpoint.'
Produktion
Slutsats
I det här ämnet demonstrerade vi om Bash Function. En Bash-funktion betraktas som ett block med återanvändbar kod som utvecklats för att utföra en specifik operation. När det väl är definierat kan det anropas flera gånger i ett skript.