Funktioner i Bash-skript
Organisera koden med funktioner för att främja återanvändning och göra skripten renare och enklare att underhålla.
Funktioner i Bash-skript är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad är Bash-funktioner?
I Bash-skriptning är en funktion ett kodblock som utför en specifik uppgift. Se den som ett miniskript i ditt huvudskript.
Funktioner hjälper dig att:
- Återanvända kod: Skriva en logik en gång och anropa den flera gånger.
- Organisera skript: Dela upp komplexa uppgifter i mindre, hanterbara enheter.
- Förbättra läsbarheten: Göra skriptet enklare att förstå och underhålla.
Definiera en enkel funktion
Det finns två vanliga sätt att definiera en funktion i Bash. Båda ger samma resultat. Den första syntaxen är vanligast.
Prova att köra det här exemplet. Det definierar funktioner, men anropar dem ännu inte!
#!/bin/bash
# Method 1: The most common way
my_first_func () {
echo "Hello from my_first_func!"
}
# Method 2: Using the 'function' keyword
function my_second_func {
echo "Hello from my_second_func!"
}
echo "Functions defined, but not called."Anropa dina funktioner
Att definiera en funktion kör den inte. Om du vill köra koden i en funktion anropar du den helt enkelt med dess namn, precis som vilket annat kommando som helst.
Se hur vi anropar my_function efter att ha definierat den:
#!/bin/bash
my_function () {
echo "This message is from inside the function."
}
echo "Script started."
my_function # Call the function here
echo "Script finished."Lokala variabler i funktioner
Som standard är variabler som definieras i en Bash-funktion globala, vilket innebär att de kan nås och ändras var som helst i skriptet.
För att förhindra oavsiktliga sidoeffekter och hålla funktionerna avgränsade använder du nyckelordet local för att deklarera en variabel som lokal. Lokala variabler finns endast i den funktionen.
#!/bin/bash
global_message="I'm a global message"
my_function () {
local func_message="I'm a local message"
global_message="I've been changed by the function!"
echo "Inside func: $func_message"
echo "Inside func: $global_message"
}
echo "Before func: $global_message"
my_function
echo "After func: $global_message"
echo "After func: $func_message (This will be empty)"Skicka argument till funktioner
Du kan skicka information till dina funktioner med argument, precis som med vanliga skalkommandon. Inuti funktionen nås dessa argument med särskilda variabler:
$1,$2,$3...: Enskilda argument$#: Det totala antalet argument$@: Alla argument som separata strängar
#!/bin/bash
greet_user () {
echo "Hello, $1!"
echo "You are $2 years old."
echo "Total arguments received: $#"
echo "All arguments: $@"
}
echo "Calling greet_user with two arguments:"
greet_user "Alice" 30
echo "\nCalling greet_user with one argument:"
greet_user "Bob"Funktionens avslutningsstatus (return)
En funktion returnerar, precis som vilket kommando som helst, en avslutningsstatus. Enligt konvention betyder 0 att körningen lyckades, medan alla värden som inte är noll anger ett fel.
Du använder nyckelordet return för att ange denna avslutningsstatus. Därefter kan du kontrollera den med specialvariabeln $?, direkt efter funktionsanropet.
#!/bin/bash
check_age () {
local age=$1
if [ "$age" -ge 18 ]; then
return 0 # Success: 18 or older
else
return 1 # Failure: under 18
fi
}
check_age 25
echo "Exit status for 25: $?"
check_age 16
echo "Exit status for 16: $?"
if check_age 20; then
echo "User is an adult."
else
echo "User is a minor."
fiFånga funktionens utdata
Medan return skickar en avslutningsstatus ska funktionen skriva ut värdet med echo till standardutdata om du vill att den ska skapa ett ”värde” som kan lagras i en variabel.
Sedan fångar du denna utdata med kommandosubstitution genom att omge funktionsanropet med $(...).
#!/bin/bash
get_full_name () {
local first_name=$1
local last_name=$2
echo "$first_name $last_name" # Echo the full name
}
name="$(get_full_name "John" "Doe")"
echo "Full name captured: $name"
calculate_area () {
local length=$1
local width=$2
echo $((length * width))
}
area=$(calculate_area 10 5)
echo "Calculated area: $area"Praktiskt exempel: En loggare
Här är ett praktiskt exempel på en återanvändbar funktion: en enkel loggare. Funktionen kan anropas var som helst i skriptet för att skriva ut meddelanden med tidsstämpel, vilket gör felsökning och uppföljning enklare.
#!/bin/bash
log_message () {
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
local message="$1"
echo "[$timestamp] $message"
}
log_message "Script execution started."
sleep 1 # Simulate some work
log_message "Processing user data..."
sleep 1
log_message "Operation completed successfully."Bästa praxis för funktioner
Följ dessa tips för att skriva tydliga och lättunderhållna skript med funktioner:
- Håll det enkelt: Varje funktion bör göra en sak väl.
- Beskrivande namn: Använd tydliga namn som
validate_inputellercreate_backup. - Använd
local: Använd alltidlocalför variabler inuti funktioner för att undvika konflikter. - Lägg till kommentarer: Förklara vad funktionen gör, vilka argument den tar emot och vad den returnerar.
- Validera indata: Kontrollera argumenten om funktionen förväntar sig specifika sådana.
Kontroll av funktionsargument
Testa dina kunskaper om hur argument skickas till och nås i Bash-funktioner.
Funktioner: Sammanfattning och nästa steg
Bra jobbat! Du behärskar nu Bash-funktioner.
Vi gick igenom:
- Att definiera och anropa funktioner.
- Att använda
localför variabelomfattning. - Att skicka argument med
$1,$#,$@. - Att ange avslutningsstatus med
return. - Att fånga utdata med
echooch kommandosubstitution.
Funktioner är avgörande för att skriva modulära, återanvändbara och lättunderhållna Bash-skript. Fortsätt öva för att göra dina skript kraftfullare och mer välorganiserade!
Lär dig DevOps-bootcamp med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Funktioner i Bash-skript” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Funktioner i Bash-skript”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Funktioner i Bash-skript”?
Organisera koden med funktioner för att främja återanvändning och göra skripten renare och enklare att underhålla. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Funktioner i Bash-skript”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Loopkonstruktioner (for, while)
- Funktioner i Bash-skript
- Skriptargument och alternativ ($@, $#, getopts)
- case-satsen och mönstermatchning