Mestring av Linux-kommandolinjen og Bash-skripting · leksjon

Funksjoner i Bash-skript

Organiser koden din med funksjoner for å fremme gjenbruk og gjøre skriptene ryddigere og enklere å vedlikeholde.

Leksjon 2 av 411 trinn

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."
fi

Fange 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_input eller create_backup.
  • Bruk local: Bruk alltid local for 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 local for variabelomfang.
  • Sende argumenter med $1, $#, $@.
  • Angi avslutningsstatus med return.
  • Fange opp utdata med echo og 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!

Gratis å komme i gang

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

  1. Løkker (for, while)
  2. Funksjoner i Bash-skript
  3. Skriptargumenter og alternativer ($@, $#, getopts)
  4. case-setningen og mønstergjenkjenning
← Tilbake til Mestring av Linux-kommandolinjen og Bash-skripting