Bash vs Python для DevOps инженеров и системных администраторов
Inhoudsopgave:
- Bash functie verklaring
- Variabelenbereik
- Retourwaarden
- Argumenten doorgeven aan Bash-functies
- Conclusie
Een Bash-functie is in wezen een reeks opdrachten die meerdere keren kunnen worden opgeroepen. Het doel van een functie is om u te helpen uw bash-scripts leesbaarder te maken en te voorkomen dat u steeds dezelfde code hoeft te schrijven.
In vergelijking met de meeste programmeertalen zijn Bash-functies enigszins beperkt. In deze tutorial behandelen we de basisprincipes van Bash-functies en laten we u zien hoe u deze kunt gebruiken in uw shellscripts.
Bash functie verklaring
De syntaxis voor het declareren van een bash-functie is heel eenvoudig. Ze kunnen in twee verschillende formaten worden gedeclareerd:
-
Het eerste formaat begint met de functienaam, gevolgd door haakjes. Dit is het voorkeurs- en meer gebruikte formaat.
function_name () { commands }Versie met één lijn:
function_name () { commands; }Het tweede formaat begint met het
functiongereserveerde woord gevolgd door de functienaam.function function_name { commands }Versie met één lijn:
function function_name { commands; }
Enkele punten om op te merken:
- De opdrachtenlijst tussen accolades
{}is de hoofdtekst van de functie. De accolades die het functielichaam omringen, moeten van het lichaam worden gescheiden door spaties of nieuwe lijnen. Het definiëren van een functie voert het niet uit. Gebruik de functienaam om een bash-functie op te roepen. Opdrachten tussen de accolades worden uitgevoerd telkens wanneer de functie in het shellscript wordt aangeroepen. De functiedefinitie moet vóór elke aanroep van de functie worden geplaatst;moet de laatste opdracht in de functie volgen. Probeer altijd uw functienamen beschrijvend te houden.
Bekijk dit voorbeeld om dit beter te begrijpen:
~ / Hello_world.sh
#!/bin/bash hello_world () { echo 'hello, world' } hello_world
Laten we de code regel voor regel analyseren:
- In regel
3definiëren we de functie door hem een naam te geven en de accolade te openen{die het begin van het lichaam van de functie aangeeft. Lijn4is het functie-element. De hoofdtekst kan meerdere opdrachten en variabele declaraties bevatten.hello_world5, de sluitende accolade}, definieert het einde van de functiehello_world. In regel7we de functie uit. U kunt de functie zo vaak uitvoeren als u nodig hebt.
Als je het script uitvoert, wordt het
hello, world
afgedrukt.
Variabelenbereik
Globale variabelen zijn variabelen die overal in het script toegankelijk zijn, ongeacht het bereik. In Bash worden alle variabelen standaard gedefinieerd als globaal, zelfs als ze binnen de functie worden gedeclareerd.
Lokale variabelen kunnen worden gedeclareerd in de hoofdtekst met het
local
trefwoord en kunnen alleen binnen die functie worden gebruikt. U kunt lokale variabelen met dezelfde naam hebben in verschillende functies.
Laten we een voorbeeld bekijken om beter te illustreren hoe het bereik van variabelen in Bash werkt:
~ / Variables_scope.sh
#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"
Het script begint met het definiëren van twee globale variabelen
var1
en
var2
. Vervolgens een functie die een lokale variabele
var1
instelt en de globale variabele
var2
wijzigt.
Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D
Uit de bovenstaande output kunnen we concluderen dat:
- Als u een lokale variabele in de hoofdtekst instelt met dezelfde naam als een bestaande globale variabele, heeft deze voorrang op de globale variabele. Globale variabelen kunnen vanuit de functie worden gewijzigd.
Retourwaarden
In tegenstelling tot functies in "echte" programmeertalen, kunt u met Bash-functies geen waarde retourneren wanneer deze wordt aangeroepen. Wanneer een bash-functie is voltooid, is de retourwaarde de status van de laatste instructie die in de functie is uitgevoerd,
0
voor succes en een niet-nul decimaal getal in het bereik 1 - 255 voor mislukking.
De retourstatus kan worden opgegeven met behulp van het retourwoord en wordt toegewezen aan de variabele
$?
. Het
return
beëindigt de functie. Je kunt het zien als de exit-status van de functie.
#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?
some result 55
Om daadwerkelijk een willekeurige waarde van een functie te retourneren, moeten we andere methoden gebruiken. De eenvoudigste optie is om het resultaat van de functie toe te wijzen aan een globale variabele:
~ / Return_values.sh
#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result
some result
Een andere, betere optie om een waarde van een functie te retourneren, is om de waarde naar
stdout
te sturen met behulp van echo of
printf
zoals hieronder weergegeven:
#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result
some result
In plaats van eenvoudigweg de functie uit te voeren die het bericht naar stdout zal afdrukken, wijzen we de functie-uitvoer toe aan de variabele
func_result
met behulp van de opdrachtvervanging
$()
. De variabele kan later indien nodig worden gebruikt.
Argumenten doorgeven aan Bash-functies
Om een willekeurig aantal argumenten aan de bash-functie door te geven, plaatst u ze gewoon achter de naam van de functie, gescheiden door een spatie. Het is een goede gewoonte om de argumenten dubbel te citeren om misparsing van een argument met spaties erin te voorkomen.
- De doorgegeven parameters zijn
$1,$2,$3…$n, overeenkomend met de positie van de parameter achter de naam van de functie. De variabele$0is gereserveerd voor de naam van de functie. De variabele$#bevat het aantal doorgegeven parameters / argumenten aan de De variabelen$*en$@alle positionele parameters / argumenten die aan de functie zijn doorgegeven.- Bij dubbele aanhaling wordt
"$*"uitgebreid naar een enkele string gescheiden door een spatie (het eerste teken van IFS) -"$1 $2 $n". Bij dubbele aanhaling wordt"$@"uitgebreid naar afzonderlijke strings -"$1" "$2" "$n". Indien niet dubbel vermeld, zijn$*en$@hetzelfde.
- Bij dubbele aanhaling wordt
Hier is een voorbeeld:
~ / Passing_arguments.sh
#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"
Conclusie
Een Bash-functie is een blok herbruikbare code dat is ontworpen om een bepaalde bewerking uit te voeren. Eenmaal gedefinieerd, kan de functie meerdere keren in een script worden aangeroepen.
Misschien wilt u ook lezen hoe u een Bash-functie kunt gebruiken om een memorabele sneltoetsopdracht voor een langere opdracht te maken.
bash-terminalMicrosoft Research Asia host poorten op 10 jaar Bash
Microsoft Research Asia is in 1998 van een dozijn mensen gegroeid tot meer dan 350 een decennium later.
Bash uitvoeren op Ubuntu op Windows 10
Als u Windows Subsystem voor Linux inschakelt, kunt u Bash op Ubuntu uitvoeren op Windows 10, Bash-scripts , Linux-opdrachtregelprogramma`s, Linux-eerste hulpprogramma`s.
Bash-arrays
Arrays zijn een van de meest gebruikte en fundamentele gegevensstructuren. In dit artikel behandelen we de Bash-arrays en leggen we uit hoe je ze kunt gebruiken in je Bash-scripts.







