Bli ekspert på Linux-kommandolinjen · leksjon

Automatisere oppgaver med shell-funksjoner

Skriv gjenbrukbare shell-funksjoner for å modularisere og forenkle komplekse skript og arbeidsflyter.

Leksjon 3 av 411 trinn

Automatisere oppgaver med shell-funksjoner er en gratis leksjon i Bli ekspert på Linux-kommandolinjen på CoddyKit. Dette er leksjon 3 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 Bli ekspert på Linux-kommandolinjen, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Bli ekspert på Linux-kommandolinjen inneholder totalt 4 leksjoner.

Hva er shell-funksjoner?

Shell-funksjoner er som små skript i hovedskriptet eller shell-økten. De lar deg gruppere kommandoer for å utføre en bestemt oppgave.

  • Gjenbruk: Kjør det samme settet med kommandoer flere ganger uten å skrive dem på nytt.
  • Organisering: Del opp komplekse skript i mindre og mer håndterlige deler.
  • Modularitet: Forbedre lesbarheten og gjør skriptene enklere å vedlikeholde.

Tenk på dem som egendefinerte kommandoer du definerer selv!

Definere en enkel funksjon

Det er enkelt å definere en funksjon. Du gir den et navn, etterfulgt av parenteser (valgfrie i enkelte shell, men anbefalt), og deretter krøllparenteser som inneholder kommandoene.

Prøv å kjøre dette enkle eksempelet:

#!/bin/bash

# Define a function named 'say_hello'
say_hello() {
  echo "Hello, CoddyKit user!"
}

# Call the function
say_hello

Kalle funksjoner

Når funksjonen er definert, kan du kalle den ved ganske enkelt å skrive navnet, på samme måte som med enhver annen kommando. Funksjoner kan kalles flere ganger i skriptet.

Slik kan du kalle en funksjon for å utføre en gjentakende oppgave:

#!/bin/bash

log_action() {
  echo "[INFO] Action performed: $1"
}

echo "Starting daily tasks..."
log_action "Backup database"
log_action "Clean temporary files"
log_action "Send notification"
echo "Daily tasks completed."

Sende argumenter til funksjoner

Funksjoner blir langt mer nyttige når du kan sende informasjon til dem. Disse kalles argumenter.

Inne i funksjonen får du tilgang til argumentene ved hjelp av spesielle variabler: $1 for det første argumentet, $2 for det andre og så videre. $@ viser til alle argumentene.

#!/bin/bash

greet_person() {
  echo "Hello, $1! Welcome to CoddyKit."
  echo "We heard you like $2."
}

# Call with arguments
greet_person Alice Bash
greet_person Bob Python

Forstå returverdier

I motsetning til enkelte programmeringsspråk «returnerer» ikke shell-funksjoner en verdi i tradisjonell forstand (for eksempel et tall eller en streng). I stedet returnerer de en avslutningsstatus.

En avslutningsstatus på 0 betyr vanligvis at operasjonen var vellykket, mens alle andre tall (1-255) angir en feil. Du kan angi dette eksplisitt ved å bruke kommandoen return. Bruk echo for å skrive utdata.

#!/bin/bash

check_number() {
  if (( $1 % 2 == 0 )); then
    echo "Number $1 is even."
    return 0 # Success
  else
    echo "Number $1 is odd."
    return 1 # Failure
  fi
}

check_number 4
echo "Exit status: $?"

check_number 7
echo "Exit status: $?"

Bruke lokale variabler

Variabler som defineres inne i en funksjon, er globale som standard. Det betyr at de kan påvirke variabler utenfor funksjonen, noe som kan føre til uventet oppførsel.

For å hindre dette bruker du nøkkelordet local til å deklarere variabler som bare er tilgjengelige i den aktuelle funksjonen. Dette holder funksjonens virkeområde ryddig.

#!/bin/bash

global_message="I am a global message."

my_function() {
  local function_message="I am local to the function."
  echo "Inside function: $global_message"
  echo "Inside function: $function_message"
}

echo "Outside function (before call): $global_message"
my_function
echo "Outside function (after call): $global_message"
# Trying to access function_message here would fail.

Funksjoner i større skript

I lengre skript er det god praksis å definere funksjonene i begynnelsen. Da er de tilgjengelige før noen del av skriptet forsøker å kalle dem.

Funksjoner bidrar til å dele opp komplekse automatiseringsoppgaver i logiske blokker som kan gjenbrukes.

#!/bin/bash

# --- Function Definitions ---
log_info() {
  echo "[INFO] $(date +%H:%M:%S) - $1"
}

create_backup() {
  local target_dir="/tmp/backups"
  log_info "Creating backup in $target_dir..."
  mkdir -p "$target_dir"
  # Simulate backup process
  sleep 1
  log_info "Backup completed for $1."
}

# --- Main Script Logic ---
log_info "Script started."

create_backup "website_data"
create_backup "user_configs"

log_info "Script finished."

Laste inn eksterne funksjonsfiler

Du kan lagre funksjoner i en separat fil og deretter «source» dem inn i hovedskriptet eller shell-økten. Dette er nyttig for å dele felles funksjoner mellom flere skript.

Kommandoen source (eller kortformen .) leser og kjører kommandoer fra den angitte filen i det gjeldende shell-miljøet.

  • Innholdet i my_library.sh:
    #!/bin/bash
    
    hello_world() {
      echo "Hello from my_library!"
    }
    
    calculate_square() {
      echo $(( $1 * $1 ))
    }
  • Innholdet i main_script.sh:
    #!/bin/bash
    
    source my_library.sh
    
    hello_world
    result=$(calculate_square 7)
    echo "The square of 7 is: $result"

Når du kjører main_script.sh, kjører det funksjonene som er definert i my_library.sh.

Praktisk eksempel: Kontrollere kommandoer

Her er en nyttig funksjon som kontrollerer om en bestemt kommando er tilgjengelig på systemet. Den kan brukes til å sikre at alle forutsetningene er oppfylt før skriptet fortsetter.

#!/bin/bash

command_exists() {
  # 'type -P' checks if command exists in PATH
  # '&> /dev/null' redirects all output to nowhere
  type -P "$1" &> /dev/null
}

echo "Checking for common commands..."

if command_exists "git"; then
  echo "Git is installed. Great!"
else
  echo "Git is not installed. Please install it."
fi

if command_exists "nonexistent_command"; then
  echo "This shouldn't print."
else
  echo "'nonexistent_command' is not found, as expected."
fi

Test: Funksjonens virkeområde

Se på følgende shell-skript. Hva blir resultatet?

#!/bin/bash

my_func() {
  local msg="World"
  echo "$1 $msg"
}

msg="CoddyKit"
my_func "Hello"
echo "$msg"

Oppsummering: Shell-funksjoner

Du behersker nå shell-funksjoner! Her er en kort oppsummering:

  • Funksjoner grupperer kommandoer for gjenbruk og organisering.
  • Definer dem med function_name() { commands; }, og kall dem ved navn.
  • Send argumenter ved hjelp av $1, $2 og så videre.
  • Funksjoner returnerer en avslutningsstatus (0 ved suksess). Bruk echo for utdata.
  • Bruk local til å deklarere variabler innenfor funksjonens virkeområde.
  • Du kan source funksjoner fra eksterne filer for å dele dem.

Funksjoner er et kraftig verktøy for å skrive ryddigere, mer effektive og automatiserte shell-skript. Fortsett å øve!

Gratis å komme i gang

Lær deg Bli ekspert på Linux-kommandolinjen 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
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Automatisere oppgaver med shell-funksjoner» gratis?

Ja – hele teksten i «Automatisere oppgaver med shell-funksjoner» 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 Bli ekspert på Linux-kommandolinjen-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Bli ekspert på Linux-kommandolinjen inneholder totalt 4 leksjoner.

Hva lærer jeg i «Automatisere oppgaver med shell-funksjoner»?

Skriv gjenbrukbare shell-funksjoner for å modularisere og forenkle komplekse skript og arbeidsflyter. Du øver på Bli ekspert på Linux-kommandolinjen 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 Bli ekspert på Linux-kommandolinjen?

Ingen tidligere erfaring er nødvendig. Bli ekspert på Linux-kommandolinjen 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 3 av 4.

Hvor lang tid tar leksjonen «Automatisere oppgaver med shell-funksjoner»?

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 Bli ekspert på Linux-kommandolinjen-leksjonen?

Ja. Alle Bli ekspert på Linux-kommandolinjen-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. Planlegging av jobber: `cron` og `at`
  2. Tjenestehåndtering: `systemctl` (systemd)
  3. Automatisere oppgaver med shell-funksjoner
  4. Sentralisert logging og rotasjon med journald og logrotate
← Tilbake til Bli ekspert på Linux-kommandolinjen