Bash vs Python для DevOps инженеров и системных администраторов
Innehållsförteckning:
- Basfunktionsdeklaration
- Variabler Omfång
- Returnera värden
- Överför argument till basfunktioner
- Slutsats
En Bash-funktion är i huvudsak en uppsättning kommandon som kan kallas flera gånger. Syftet med en funktion är att hjälpa dig att göra dina basskript mer läsbara och att undvika att skriva samma kod om och om igen.
Jämfört med de flesta programmeringsspråk är Bash-funktionerna något begränsade. I den här tutorialen kommer vi att täcka grunderna i Bash-funktioner och visa dig hur du använder dem i dina skalskript.
Basfunktionsdeklaration
Syntaxen för att deklarera en bash-funktion är mycket enkel. De kan deklareras i två olika format:
-
Det första formatet börjar med funktionsnamnet, följt av parenteser. Detta är det föredragna och mer använda formatet.
function_name () { commands }Enfaldig version:
function_name () { commands; }Det andra formatet börjar med
functionreserverat ord följt av funktionsnamnet.function function_name { commands }Enfaldig version:
function function_name { commands; }
Få poäng att notera:
- Kommandolistan mellan lockiga hängslen
{}är funktionen. De lockiga hängslen som omger funktionskroppen måste separeras från kroppen genom mellanrum eller nylinjer. Att definiera en funktion kör inte den. För att åberopa en bash-funktion använder du bara funktionsnamnet. Kommandon mellan de lockiga hängslen exekveras varje gång funktionen anropas i skalskriptet. Funktionsdefinitionen måste placeras innan några samtal till funktionen. När du använder en enda rad "komprimerade" funktioner, en semikolon;måste följa det sista kommandot i funktionen. Du bör alltid försöka hålla dina funktionsnamn beskrivande.
För att förstå detta bättre, titta på följande exempel:
~ / Hello_world.sh
#!/bin/bash hello_world () { echo 'hello, world' } hello_world
Låt oss analysera koden rad för rad:
- I rad
3definierar vi funktionen genom att ge den ett namn och öppna den lockiga stången{som markerar början på funktionens kropp. Linje4är funktionskroppen. Funktionskroppen kan innehålla flera kommandon och variabla deklarationer. Linje5, den stängande krullningsfästet}, definierar slutet påhello_worldfunktionen. I rad7utför vi funktionen. Du kan köra funktionen så många gånger du behöver.
Om du kör skriptet kommer det att skrivas ut
hello, world
.
Variabler Omfång
Globala variabler är variabler som kan nås var som helst i skriptet oavsett omfattning. I Bash definieras alla variabler som standard som globala, även om de anges i funktionen.
Lokala variabler kan deklareras i funktionskroppen med det
local
nyckelordet och kan endast användas inom den funktionen. Du kan ha lokala variabler med samma namn i olika funktioner.
För att bättre illustrera hur variablerna fungerar i Bash, låt oss överväga ett exempel:
~ / 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"
Skriptet börjar med att definiera två globala variabler
var1
och
var2
. Sedan en funktion som ställer in en lokal variabel
var1
och modifierar den globala variabeln
var2
.
Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D
Från utgången ovan kan vi dra slutsatsen att:
- Om du ställer in en lokal variabel i funktionskroppen med samma namn som en befintlig global variabel kommer den att ha företräde framför den globala variabeln. Globala variabler kan ändras från funktionen.
Returnera värden
Till skillnad från funktioner på ”riktiga” programmeringsspråk, låter Bash-funktionerna dig inte returnera ett värde när du ringer. När en bash-funktion slutförts är dess returräge statusen för det sista uttalet som utförts i funktionen,
0
för framgång och icke-nollt decimaltal i intervallet 1 - 255 för fel.
Returstatus kan anges med hjälp av
return
, och det tilldelas variabeln
$?
. Returmeddelandet avslutar funktionen. Du kan tänka på det som funktionens utgångsstatus.
#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?
some result 55
För att faktiskt returnera ett godtyckligt värde från en funktion måste vi använda andra metoder. Det enklaste alternativet är att tilldela resultatet av funktionen till en global variabel:
~ / Return_values.sh
#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result
some result
Ett annat, bättre alternativ att returnera ett värde från en funktion är att skicka värdet till
stdout
med eko eller
printf
som visas nedan:
#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result
some result
Istället för att helt enkelt utföra funktionen som kommer att skriva ut meddelandet till stdout, tilldelar vi funktionsutgången till
func_result
variabeln med kommandosubstitutionen
$()
. Variabeln kan senare användas efter behov.
Överför argument till basfunktioner
För att överföra valfritt antal argument till bash-funktionen, placera dem direkt efter funktionens namn, åtskilda med ett mellanslag. Det är en bra praxis att dubbelcitera argumenten för att undvika felaktigt uppdelning av ett argument med mellanslag i det.
- De passerade parametrarna är
$1,$2,$3…$n, motsvarande parameterns position efter funktionens namn. Variabeln$0är reserverad för funktionens namn. Variabeln$#innehåller antalet positionsparametrar / argument som skickas till funktionen$*och$@variabler innehåller alla positionsparametrar / argument som skickas till funktionen.- När det är dubbelt citerat expanderar
"$*"till en enda sträng separerad med mellanslag (det första tecknet i IFS) -"$1 $2 $n"När dubbelt citerat expanderar"$@"till separata strängar -"$1" "$2" "$n"När inte dubbelt citerade är$*och$@desamma.
- När det är dubbelt citerat expanderar
Här är ett exempel:
~ / Passing_arguments.sh
#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"
Slutsats
En Bash-funktion är ett block med återanvändbar kod utformad för att utföra en viss operation. När den har definierats kan funktionen kallas flera gånger i ett skript.
Du kanske också vill läsa om hur du använder en Bash-funktion för att skapa ett minnesvärt genvägskommando för ett längre kommando.
bash terminalMicrosoft Research Asia Hosts Gates vid 10 års Bash
Microsoft Research Asia har ökat från ett dussin personer 1998 till mer än 350 ett decennium senare.
Så här kör du Bash på Ubuntu på Windows 10
Genom att aktivera Windows Subsystem för Linux kan du köra Bash på Ubuntu på Windows 10, Bash-skript , Linux-kommandoradsverktyg, Linux-första verktyg.
Bash-matriser
Matriser är en av de mest använda och grundläggande datastrukturerna. I den här artikeln täcker vi Bash-matriserna och förklarar hur du använder dem i dina Bash-skript.







