In dit onderwerp hebben we de basisprincipes van bash-functies gedemonstreerd en hoe ze werken in bash-shell-scripts.
Functies in bash-scripting zijn een geweldige optie om code opnieuw te gebruiken. Een Bash-functie kan worden gedefinieerd als een reeks opdrachten die binnen het bash-script meerdere keren kunnen worden aangeroepen. Het doel van de functie in bash is om u te helpen uw scripts leesbaarder te maken en te voorkomen dat u steeds opnieuw dezelfde code schrijft. Het stelt de ontwikkelaars ook in staat ingewikkelde en lange code op te splitsen in kleine delen die op elk gewenst moment kunnen worden opgeroepen. Functies kunnen op elk moment en herhaaldelijk worden aangeroepen, waardoor we de code kunnen hergebruiken, optimaliseren en minimaliseren.
Hieronder volgen enkele belangrijke punten over bash-functies:
- Een functie moet in het shellscript worden gedeclareerd voordat we deze kunnen gebruiken.
- Argumenten kunnen aan de functies worden doorgegeven en binnen de functie worden benaderd als , , enz.
- Lokale variabelen kunnen binnen de functie worden toegewezen, en de reikwijdte van dergelijke variabelen zal alleen die specifieke functie zijn.
- Ingebouwde opdrachten van de Bash-shell kunnen worden overschreven met behulp van functies.
Syntaxis
De syntaxis voor het declareren van een bash-functie kan in twee formaten worden gedefinieerd:
1. De eerste methode begint met de functienaam, gevolgd door haakjes. Het is de meest geprefereerde en meest gebruikte methode:
function_name () { commands }
De versie met één lijn kan zoals hieronder worden vermeld:
function_name () { commands; }
2. De tweede methode begint met het functie gereserveerde woord, gevolgd door de functienaam:
bash-arrays
function function_name { commands }
De versie met één lijn kan zoals hieronder worden vermeld:
function function_name { commands; }
Vergeleken met de meeste programmeertalen zijn de Bash-functies enigszins beperkt. Laten we het concept begrijpen met behulp van enkele voorbeelden:
Voorbeeld: Methode 1
#!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP
Uitvoer
Welcome to Javatpoint.
Voorbeeld: Methode 2
#!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP
Uitvoer
Welcome to Javatpoint.
Argumenten doorgeven
Zoals de meeste programmeertalen kunnen we de argumenten ook doorgeven en de gegevens verwerken in bash-functies. We kunnen de gegevens op dezelfde manier in de functie invoegen als het doorgeven van opdrachtregelargumenten aan een bash-script.
Linux hoe je een map hernoemt
Om een willekeurig aantal argumenten aan de bash-functie door te geven, moeten we ze net na de naam van de functie invoegen. We moeten spaties toepassen tussen de functienaam en argumenten. Het is ook een goede keuze om dubbele aanhalingstekens rond de argumenten te gebruiken om te voorkomen dat de argumenten met spaties erin verkeerd worden geparseerd.
Hieronder volgen enkele belangrijke punten over het doorgeven van argumenten aan de bash-functies:
- De gegeven argumenten worden benaderd als , , ... $n, wat overeenkomt met de positie van de argumenten na de naam van de functie.
- De variabele
wordt gereserveerd gehouden voor de naam van de functie.In dit onderwerp hebben we de basisprincipes van bash-functies gedemonstreerd en hoe ze werken in bash-shell-scripts.
Functies in bash-scripting zijn een geweldige optie om code opnieuw te gebruiken. Een Bash-functie kan worden gedefinieerd als een reeks opdrachten die binnen het bash-script meerdere keren kunnen worden aangeroepen. Het doel van de functie in bash is om u te helpen uw scripts leesbaarder te maken en te voorkomen dat u steeds opnieuw dezelfde code schrijft. Het stelt de ontwikkelaars ook in staat ingewikkelde en lange code op te splitsen in kleine delen die op elk gewenst moment kunnen worden opgeroepen. Functies kunnen op elk moment en herhaaldelijk worden aangeroepen, waardoor we de code kunnen hergebruiken, optimaliseren en minimaliseren.
Hieronder volgen enkele belangrijke punten over bash-functies:
- Een functie moet in het shellscript worden gedeclareerd voordat we deze kunnen gebruiken.
- Argumenten kunnen aan de functies worden doorgegeven en binnen de functie worden benaderd als $1, $2, enz.
- Lokale variabelen kunnen binnen de functie worden toegewezen, en de reikwijdte van dergelijke variabelen zal alleen die specifieke functie zijn.
- Ingebouwde opdrachten van de Bash-shell kunnen worden overschreven met behulp van functies.
Syntaxis
De syntaxis voor het declareren van een bash-functie kan in twee formaten worden gedefinieerd:
1. De eerste methode begint met de functienaam, gevolgd door haakjes. Het is de meest geprefereerde en meest gebruikte methode:
function_name () { commands }
De versie met één lijn kan zoals hieronder worden vermeld:
function_name () { commands; }
2. De tweede methode begint met het functie gereserveerde woord, gevolgd door de functienaam:
function function_name { commands }
De versie met één lijn kan zoals hieronder worden vermeld:
function function_name { commands; }
Vergeleken met de meeste programmeertalen zijn de Bash-functies enigszins beperkt. Laten we het concept begrijpen met behulp van enkele voorbeelden:
Voorbeeld: Methode 1
#!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP
Uitvoer
Welcome to Javatpoint.
Voorbeeld: Methode 2
#!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP
Uitvoer
Welcome to Javatpoint.
Argumenten doorgeven
Zoals de meeste programmeertalen kunnen we de argumenten ook doorgeven en de gegevens verwerken in bash-functies. We kunnen de gegevens op dezelfde manier in de functie invoegen als het doorgeven van opdrachtregelargumenten aan een bash-script.
Om een willekeurig aantal argumenten aan de bash-functie door te geven, moeten we ze net na de naam van de functie invoegen. We moeten spaties toepassen tussen de functienaam en argumenten. Het is ook een goede keuze om dubbele aanhalingstekens rond de argumenten te gebruiken om te voorkomen dat de argumenten met spaties erin verkeerd worden geparseerd.
Hieronder volgen enkele belangrijke punten over het doorgeven van argumenten aan de bash-functies:
- De gegeven argumenten worden benaderd als $1, $2, $3 ... $n, wat overeenkomt met de positie van de argumenten na de naam van de functie.
- De variabele $0 wordt gereserveerd gehouden voor de naam van de functie.
- De $# variabele wordt gebruikt om het aantal positionele argumenten/parameters vast te houden dat aan de functie is gegeven.
- De variabelen $* en $@ worden gebruikt om alle argumenten/parameters op te slaan die aan de functie zijn gegeven.
- Wanneer $* wordt gebruikt met dubbele aanhalingstekens (d.w.z. '$*' ), wordt het uitgebreid naar een enkele tekenreeks, gescheiden door een spatie. Bijvoorbeeld '$1 $2 $n etc'.
- Wanneer $@ wordt gebruikt met dubbele aanhalingstekens (d.w.z. '$@' ), wordt het uitgebreid naar de afzonderlijke tekenreeks. Bijvoorbeeld '$1' '$2' '$n' enz.
- Als $* en $# niet worden gebruikt met dubbele aanhalingstekens, zijn ze allebei hetzelfde.
Hieronder volgt de code die de procedure illustreert voor het doorgeven van argumenten aan functies en het verkrijgen van toegang tot de argumenten binnen de functie.
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.'
Uitvoer
In dit script hebben we de waarden 'We', 'welcome', 'you', 'on' en 'Javatpoint' toegevoegd nadat we de function_arguments hebben aangeroepen. Deze waarden worden doorgegeven aan de functie_argumenten als parameters en opgeslagen in een lokale variabele. In tegenstelling tot andere talen slaat de tolk de doorgegeven waarden echter op in vooraf gedefinieerde variabelen, die vervolgens een naam krijgen op basis van de volgorde van de doorgegeven parameters.
Bijvoorbeeld,
'Wij' woord wordt opgeslagen in de variabele 1 .
'welkom' woord wordt opgeslagen in de variabele 2 .
'Jij' woord wordt opgeslagen in de variabele 3 .
'op' woord wordt opgeslagen in de variabele 4 .
'Javatpunt' woord wordt opgeslagen in de variabele 5 .Variabel bereik
Globale variabelen worden gedefinieerd als de variabelen die overal binnen het script toegankelijk zijn, ongeacht de reikwijdte. Standaard worden alle variabelen gedefinieerd als globale variabelen, zelfs als ze binnen de functie worden gedeclareerd. We kunnen ook variabelen maken als een lokale variabele. Lokale variabelen kunnen binnen de functietekst worden gedeclareerd met de opdracht ?local? trefwoord wanneer ze voor de eerste keer worden toegewezen. Ze zijn alleen toegankelijk binnen die functie. We kunnen lokale variabelen met dezelfde naam in verschillende functies maken. Om een lokale variabele toe te voegen, kunnen we de volgende syntaxis gebruiken:
local var_name=
Bekijk het volgende voorbeeld om beter te begrijpen hoe het bereik van variabelen werkt in Bash Scripting:
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.'
Uitvoer
Als we volgens de uitvoer een lokale variabele binnen de functietekst instellen met dezelfde naam als een bestaande globale variabele, heeft deze voorrang op de globale variabele. Globale variabelen kunnen binnen de functie worden gewijzigd.
Waarden retourneren
De meeste programmeertalen hebben het concept van het retourneren van een waarde voor de functies. Het betekent dat de functie de gegevens terug moet sturen naar de oorspronkelijke oproeplocatie. In tegenstelling tot functies in 'echte' programmeertalen biedt de Bash-functie geen ondersteuning voor het retourneren van een waarde wanneer deze wordt aangeroepen. Ze stellen ons echter in staat een retourstatus in te stellen die vergelijkbaar is met hoe een programma of opdracht wordt afgesloten met een afsluitstatus. Wanneer een bash-functie is voltooid, is de retourwaarde de status van de laatst uitgevoerde instructie in de functie. Het retourneert 0 voor de successtatus en een decimaal getal dat niet nul is in het bereik 1-255 voor mislukking.
De retourstatus kan worden aangegeven met het trefwoord 'return' en wordt toegewezen aan de variabele $?. De return-instructie beëindigt de functie en werkt als de exit-status van de functie.
Bijvoorbeeld, denk aan de volgende code:
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 $?
Uitvoer
Een andere betere optie om een waarde uit een functie te retourneren, is door de waarde naar te sturen stoer gebruik makend van echo of afdrukkenf opdrachten, zoals hieronder weergegeven:
Bash-script
#!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet
Uitvoer
Welcome to Javatpoint.
Commando's overschrijven
We hebben een optie om de bash-opdrachten te overschrijven door een functie te maken met dezelfde naam als de opdracht die we gaan overschrijven. Als we bijvoorbeeld het commando 'echo' willen overschrijven, moeten we een functie maken met de naam 'echo'.
Dit concept van het overschrijven van de bash-opdrachten kan in sommige scenario's nuttig zijn, bijvoorbeeld wanneer we een opdracht met specifieke opties willen gebruiken. Ook als we het niet leuk vinden om het hele commando meerdere keren van opties te voorzien binnen het script. In dergelijke gevallen kunnen we de ingebouwde bash-opdracht overschrijven voor opdracht met opties. Laten we nu het concept van het overschrijven van de opdrachten in Bash Shell Scripting begrijpen met behulp van enkele voorbeelden:
Voorbeeld
In dit voorbeeld hebben we het 'echo'-commando overschreven en de tijdstempel in de vorm van het argument aan het 'echo'-commando toegevoegd.
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.'
Uitvoer
Conclusie
In dit onderwerp hebben we gedemonstreerd over de Bash-functie. Een Bash-functie wordt beschouwd als een blok herbruikbare code dat is ontwikkeld om een specifieke bewerking uit te voeren. Als het eenmaal is gedefinieerd, kan het meerdere keren binnen een script worden aangeroepen.
- De $# variabele wordt gebruikt om het aantal positionele argumenten/parameters vast te houden dat aan de functie is gegeven.
- De variabelen $* en $@ worden gebruikt om alle argumenten/parameters op te slaan die aan de functie zijn gegeven.
- Wanneer $* wordt gebruikt met dubbele aanhalingstekens (d.w.z. '$*' ), wordt het uitgebreid naar een enkele tekenreeks, gescheiden door een spatie. Bijvoorbeeld ' $n etc'.
- Wanneer $@ wordt gebruikt met dubbele aanhalingstekens (d.w.z. '$@' ), wordt het uitgebreid naar de afzonderlijke tekenreeks. Bijvoorbeeld '' '' '$n' enz.
- Als $* en $# niet worden gebruikt met dubbele aanhalingstekens, zijn ze allebei hetzelfde.
Hieronder volgt de code die de procedure illustreert voor het doorgeven van argumenten aan functies en het verkrijgen van toegang tot de argumenten binnen de functie.
Bash-script
centreren van een afbeelding in css
#!/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.'
Uitvoer
In dit script hebben we de waarden 'We', 'welcome', 'you', 'on' en 'Javatpoint' toegevoegd nadat we de function_arguments hebben aangeroepen. Deze waarden worden doorgegeven aan de functie_argumenten als parameters en opgeslagen in een lokale variabele. In tegenstelling tot andere talen slaat de tolk de doorgegeven waarden echter op in vooraf gedefinieerde variabelen, die vervolgens een naam krijgen op basis van de volgorde van de doorgegeven parameters.
Bijvoorbeeld,
'Wij' woord wordt opgeslagen in de variabele 1 .
'welkom' woord wordt opgeslagen in de variabele 2 .
'Jij' woord wordt opgeslagen in de variabele 3 .
'op' woord wordt opgeslagen in de variabele 4 .
'Javatpunt' woord wordt opgeslagen in de variabele 5 .
Variabel bereik
Globale variabelen worden gedefinieerd als de variabelen die overal binnen het script toegankelijk zijn, ongeacht de reikwijdte. Standaard worden alle variabelen gedefinieerd als globale variabelen, zelfs als ze binnen de functie worden gedeclareerd. We kunnen ook variabelen maken als een lokale variabele. Lokale variabelen kunnen binnen de functietekst worden gedeclareerd met de opdracht ?local? trefwoord wanneer ze voor de eerste keer worden toegewezen. Ze zijn alleen toegankelijk binnen die functie. We kunnen lokale variabelen met dezelfde naam in verschillende functies maken. Om een lokale variabele toe te voegen, kunnen we de volgende syntaxis gebruiken:
local var_name=
Bekijk het volgende voorbeeld om beter te begrijpen hoe het bereik van variabelen werkt in Bash Scripting:
applet
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.'
Uitvoer
Als we volgens de uitvoer een lokale variabele binnen de functietekst instellen met dezelfde naam als een bestaande globale variabele, heeft deze voorrang op de globale variabele. Globale variabelen kunnen binnen de functie worden gewijzigd.
Waarden retourneren
De meeste programmeertalen hebben het concept van het retourneren van een waarde voor de functies. Het betekent dat de functie de gegevens terug moet sturen naar de oorspronkelijke oproeplocatie. In tegenstelling tot functies in 'echte' programmeertalen biedt de Bash-functie geen ondersteuning voor het retourneren van een waarde wanneer deze wordt aangeroepen. Ze stellen ons echter in staat een retourstatus in te stellen die vergelijkbaar is met hoe een programma of opdracht wordt afgesloten met een afsluitstatus. Wanneer een bash-functie is voltooid, is de retourwaarde de status van de laatst uitgevoerde instructie in de functie. Het retourneert 0 voor de successtatus en een decimaal getal dat niet nul is in het bereik 1-255 voor mislukking.
De retourstatus kan worden aangegeven met het trefwoord 'return' en wordt toegewezen aan de variabele $?. De return-instructie beëindigt de functie en werkt als de exit-status van de functie.
Bijvoorbeeld, denk aan de volgende code:
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 $?
Uitvoer
Een andere betere optie om een waarde uit een functie te retourneren, is door de waarde naar te sturen stoer gebruik makend van echo of afdrukkenf opdrachten, zoals hieronder weergegeven:
Java bevat een subtekenreeks
Bash-script
#!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet
Uitvoer
Welcome to Javatpoint.
Commando's overschrijven
We hebben een optie om de bash-opdrachten te overschrijven door een functie te maken met dezelfde naam als de opdracht die we gaan overschrijven. Als we bijvoorbeeld het commando 'echo' willen overschrijven, moeten we een functie maken met de naam 'echo'.
Dit concept van het overschrijven van de bash-opdrachten kan in sommige scenario's nuttig zijn, bijvoorbeeld wanneer we een opdracht met specifieke opties willen gebruiken. Ook als we het niet leuk vinden om het hele commando meerdere keren van opties te voorzien binnen het script. In dergelijke gevallen kunnen we de ingebouwde bash-opdracht overschrijven voor opdracht met opties. Laten we nu het concept van het overschrijven van de opdrachten in Bash Shell Scripting begrijpen met behulp van enkele voorbeelden:
Voorbeeld
In dit voorbeeld hebben we het 'echo'-commando overschreven en de tijdstempel in de vorm van het argument aan het 'echo'-commando toegevoegd.
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.'
Uitvoer
Conclusie
In dit onderwerp hebben we gedemonstreerd over de Bash-functie. Een Bash-functie wordt beschouwd als een blok herbruikbare code dat is ontwikkeld om een specifieke bewerking uit te voeren. Als het eenmaal is gedefinieerd, kan het meerdere keren binnen een script worden aangeroepen.