Automatisere oppgaver med shell-funksjoner
Skriv gjenbrukbare shell-funksjoner for å modularisere og forenkle komplekse skript og arbeidsflyter.
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_helloKalle 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 PythonForstå 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."
fiTest: 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,$2og så videre. - Funksjoner returnerer en avslutningsstatus (
0ved suksess). Brukechofor utdata. - Bruk
localtil å 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!
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
- Planlegging av jobber: `cron` og `at`
- Tjenestehåndtering: `systemctl` (systemd)
- Automatisere oppgaver med shell-funksjoner
- Sentralisert logging og rotasjon med journald og logrotate