Funksjoner i Bash-skript
Organiser koden din med funksjoner for å fremme gjenbruk og gjøre skriptene ryddigere og enklere å vedlikeholde.
Funksjoner i Bash-skript er en gratis leksjon i Mestring av Linux-kommandolinjen og Bash-skripting på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Mestring av Linux-kommandolinjen og Bash-skripting, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Mestring av Linux-kommandolinjen og Bash-skripting inneholder totalt 4 leksjoner.
Hva er Bash-funksjoner
I Bash-skripting er en funksjon en kodeblokk som utfører en bestemt oppgave. Tenk på den som et lite skript i hovedskriptet.
Funksjoner hjelper deg med å:
- Gjenbruke kode: Skrive en logikk én gang og kalle den flere ganger.
- Organisere skript: Dele komplekse oppgaver opp i mindre, håndterbare enheter.
- Forbedre lesbarheten: Gjøre skriptet enklere å forstå og vedlikeholde.
Definere en enkel funksjon
Det finnes to vanlige måter å definere en funksjon på i Bash. Begge gir samme resultat. Den første syntaksen er den vanligste.
Prøv å kjøre dette eksempelet. Det definerer funksjoner, men kaller dem ikke ennå!
#!/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."Kalle funksjonene dine
Å definere en funksjon kjører den ikke. For å kjøre koden i en funksjon kaller du den ganske enkelt med navnet, akkurat som enhver annen kommando.
Se hvordan vi kaller my_function etter at den er definert:
#!/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 funksjoner
Som standard er variabler som defineres inne i en Bash-funksjon, globale. Det betyr at de kan aksesseres og endres fra hvor som helst i skriptet.
For å forhindre utilsiktede bivirkninger og holde funksjonene isolert bruker du nøkkelordet local til å deklarere en variabel som lokal. Lokale variabler finnes bare i den aktuelle funksjonen.
#!/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)"Sende argumenter til funksjoner
Du kan sende informasjon til funksjonene dine ved hjelp av argumenter, akkurat som med vanlige skallkommandoer. Inne i funksjonen får du tilgang til disse argumentene ved hjelp av spesielle variabler:
$1,$2,$3...: Individuelle argumenter$#: Det totale antallet argumenter$@: Alle argumentene som separate strenger
#!/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"Funksjonens avslutningsstatus (return)
En funksjon returnerer, på samme måte som enhver kommando, en avslutningsstatus. Etter konvensjonen betyr 0 at operasjonen var vellykket, mens alle andre verdier indikerer en feil.
Du bruker nøkkelordet return til å angi denne avslutningsstatusen. Deretter kan du kontrollere den ved hjelp av spesialvariabelen $? rett etter funksjonskallet.
#!/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."
fiFange opp funksjonsutdata
Mens return sender en avslutningsstatus, bør funksjonen bruke echo til å skrive verdien til standardutdata hvis du vil at den skal produsere en «verdi» som kan lagres i en variabel.
Deretter fanger du opp disse utdataene ved hjelp av kommandosubstitusjon, der funksjonskallet omsluttes av $(...).
#!/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 loggfører
Her er et praktisk eksempel på en gjenbrukbar funksjon: en enkel loggfører. Denne funksjonen kan kalles fra hele skriptet for å skrive ut meldinger med et tidsstempel, noe som gjør feilsøking og sporing enklere.
#!/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."Beste praksis for funksjoner
Vurder disse tipsene for å skrive tydelige og vedlikeholdbare skript med funksjoner:
- Hold det enkelt: Hver funksjon bør gjøre én ting godt.
- Beskrivende navn: Bruk beskrivende navn som
validate_inputellercreate_backup. - Bruk
local: Bruk alltidlocalfor variabler inne i funksjoner for å unngå konflikter. - Legg til kommentarer: Forklar hva funksjonen gjør, argumentene den tar imot, og hva den returnerer.
- Valider inndata: Hvis en funksjon forventer bestemte argumenter, må du kontrollere dem.
Kontrollere funksjonsargumenter
Test forståelsen din av hvordan argumenter sendes til og aksesseres i Bash-funksjoner.
Funksjoner: Oppsummering og neste steg
Godt jobbet! Du behersker nå Bash-funksjoner.
Vi har gått gjennom:
- Definere og kalle funksjoner.
- Bruke
localfor variabelomfang. - Sende argumenter med
$1,$#,$@. - Angi avslutningsstatus med
return. - Fange opp utdata med
echoog kommandosubstitusjon.
Funksjoner er avgjørende for å skrive modulære, gjenbrukbare og vedlikeholdbare Bash-skript. Fortsett å øve for å gjøre skriptene dine kraftigere og bedre organisert!
Lær deg Bash med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 22
- Leksjoner
- 88
Ofte stilte spørsmål
Er leksjonen «Funksjoner i Bash-skript» gratis?
Ja – hele teksten i «Funksjoner i Bash-skript» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Mestring av Linux-kommandolinjen og Bash-skripting-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Mestring av Linux-kommandolinjen og Bash-skripting inneholder totalt 4 leksjoner.
Hva lærer jeg i «Funksjoner i Bash-skript»?
Organiser koden din med funksjoner for å fremme gjenbruk og gjøre skriptene ryddigere og enklere å vedlikeholde. Du øver på Mestring av Linux-kommandolinjen og Bash-skripting med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Mestring av Linux-kommandolinjen og Bash-skripting?
Ingen tidligere erfaring er nødvendig. Mestring av Linux-kommandolinjen og Bash-skripting på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Funksjoner i Bash-skript»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Mestring av Linux-kommandolinjen og Bash-skripting-leksjonen?
Ja. Alle Mestring av Linux-kommandolinjen og Bash-skripting-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Løkker (for, while)
- Funksjoner i Bash-skript
- Skriptargumenter og alternativer ($@, $#, getopts)
- case-setningen og mønstergjenkjenning