Funktioner i Bash-scripts
Organisér Deres kode med funktioner, så den kan genbruges, og gør Deres scripts mere overskuelige og lettere at vedligeholde.
Funktioner i Bash-scripts er en gratis Linux-kommandolinjen og Bash-scripting på ekspertniveau-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Linux-kommandolinjen og Bash-scripting på ekspertniveau, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Linux-kommandolinjen og Bash-scripting på ekspertniveau-kurset indeholder 4 lektioner i alt.
Hvad er Bash-funktioner?
I Bash-scripting er en funktion en blok kode, der udfører en bestemt opgave. Tænk på den som et miniscript inde i dit hovedscript.
Funktioner hjælper dig med at:
- Genbruge kode: Skrive et stykke logik én gang og kalde det flere gange.
- Organisere scripts: Opdele komplekse opgaver i mindre, håndterbare enheder.
- Forbedre læsbarheden: Gøre dit script lettere at forstå og vedligeholde.
Definition af en simpel funktion
Der er to almindelige måder at definere en funktion på i Bash. Begge giver samme resultat. Den første syntaks er den mest almindelige.
Prøv at køre dette eksempel. Det definerer funktioner, men kalder dem ikke endnu!
#!/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."Kald af dine funktioner
At definere en funktion udfører den ikke. Hvis du vil køre koden i en funktion, kalder du den ganske enkelt ved dens navn, ligesom enhver anden kommando.
Se, hvordan vi kalder my_function, efter at den er defineret:
#!/bin/bash
my_function () {
echo "This message is from inside the function."
}
echo "Script started."
my_function # Call the function here
echo "Script finished."Lokale variabler i funktioner
Som standard er variabler, der defineres i en Bash-funktion, globale, hvilket betyder, at de kan tilgås og ændres fra hvor som helst i scriptet.
Brug nøgleordet local til at erklære en variabel som lokal for at forhindre utilsigtede bivirkninger og holde dine funktioner adskilt. Lokale variabler findes kun i den pågældende funktion.
#!/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)"Overførsel af argumenter til funktioner
Du kan overføre oplysninger til dine funktioner ved hjælp af argumenter, ligesom med almindelige shell-kommandoer. Inde i funktionen tilgås disse argumenter ved hjælp af særlige variabler:
$1,$2,$3...: Individuelle argumenter$#: Det samlede antal argumenter$@: Alle argumenter som separate strenge
#!/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 afslutningsstatus (returnering)
En funktion returnerer ligesom enhver kommando en afslutningsstatus. Efter konvention betyder 0, at funktionen lykkedes, mens enhver værdi forskellig fra nul angiver en fejl.
Du bruger nøgleordet return til at angive denne afslutningsstatus. Derefter kan du kontrollere den ved hjælp af den særlige variabel $? lige efter funktionskaldet.
#!/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."
fiOpsamling af funktionens output
Mens return sender en afslutningsstatus, skal funktionen bruge echo til standardoutput, hvis du vil have den til at producere en ”værdi”, der kan gemmes i en variabel.
Derefter opsamler du dette output ved hjælp af kommandosubstitution ved at sætte funktionskaldet ind i $(...).
#!/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"Praktisk eksempel: En logningsfunktion
Her er et praktisk eksempel på en genanvendelig funktion: en simpel logningsfunktion. Funktionen kan kaldes overalt i dit script for at udskrive meddelelser med et tidsstempel, hvilket gør fejlfinding og sporing lettere.
#!/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."Bedste praksis for funktioner
Overvej disse råd, når du skriver tydelige og vedligeholdelsesvenlige scripts med funktioner:
- Hold det enkelt: Hver funktion bør gøre én ting godt.
- Meningsfulde navne: Brug beskrivende navne som
validate_inputellercreate_backup. - Brug
local: Brug altidlocaltil variabler i funktioner for at undgå konflikter. - Tilføj kommentarer: Forklar, hvad funktionen gør, hvilke argumenter den tager imod, og hvad den returnerer.
- Validér input: Hvis en funktion forventer bestemte argumenter, skal du kontrollere dem.
Kontrol af funktionsargumenter
Test din forståelse af, hvordan argumenter overføres til og tilgås i Bash-funktioner.
Funktioner: Opsummering og næste trin
Godt gået! Du har nu styr på Bash-funktioner.
Vi har gennemgået:
- Definition og kald af funktioner.
- Brug af
localtil variablers synlighedsområde. - Overførsel af argumenter med
$1,$#og$@. - Angivelse af afslutningsstatus med
return. - Opsamling af output med
echoog kommandosubstitution.
Funktioner er afgørende, når du skal skrive modulære, genanvendelige og vedligeholdelsesvenlige Bash-scripts. Bliv ved med at øve dig for at gøre dine scripts mere effektive og velorganiserede!
Lær Bash med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 22
- Lektioner
- 88
Ofte stillede spørgsmål
Er lektionen “Funktioner i Bash-scripts” gratis?
Ja — hele teksten til “Funktioner i Bash-scripts” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Linux-kommandolinjen og Bash-scripting på ekspertniveau-kurset, skal du opgradere til CoddyKit PRO. Linux-kommandolinjen og Bash-scripting på ekspertniveau-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Funktioner i Bash-scripts”?
Organisér Deres kode med funktioner, så den kan genbruges, og gør Deres scripts mere overskuelige og lettere at vedligeholde. Du øver dig i Linux-kommandolinjen og Bash-scripting på ekspertniveau med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Linux-kommandolinjen og Bash-scripting på ekspertniveau?
Der kræves ingen tidligere erfaring. Linux-kommandolinjen og Bash-scripting på ekspertniveau på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Funktioner i Bash-scripts”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Linux-kommandolinjen og Bash-scripting på ekspertniveau-lektion?
Ja. Alle Linux-kommandolinjen og Bash-scripting på ekspertniveau-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Løkker (for, while)
- Funktioner i Bash-scripts
- Scriptargumenter og indstillinger ($@, $#, getopts)
- case-sætningen og mønstergenkendelse