Skalfunktioner och återanvändbara kodsnuttar
Definiera och använd Bash-funktioner för att paketera kommandon i återanvändbara, parametriserade byggblock för skalet.
Skalfunktioner och återanvändbara kodsnuttar är en gratis lektion i DevOps-bootcamp på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för DevOps-bootcamp, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Varför skalfunktioner?
En skalfunktion samlar flera kommandon under ett enda namn så att ni kan återanvända dem utan att skriva om dem.
- Snabbare än att kopiera och klistra in kommandon
- Renare än långa alias
- Kan ta emot argument, till skillnad från alias
mkcd() {
mkdir -p "$1" && cd "$1"
}Definiera en funktion
Den enklaste formen använder syntaxen name() { ... }. Kommandona inom klamrarna körs när ni anropar funktionen med dess namn.
greet() {
echo "Hello from a function"
}
greetFunktionsargument
Funktioner tar emot positionsparametrar precis som skript: $1, $2. $# är antalet och $@ expanderas till alla argument.
backup() {
cp "$1" "$1.bak"
echo "Backed up $1"
}
backup notes.txtReturvärden och avslutningsstatus
Funktioner returnerar en avslutningsstatus via return N (0–255). Använd den för att kontrollera om något lyckades eller misslyckades, inte för att returnera data.
is_root() {
[ "$(id -u)" -eq 0 ] && return 0 || return 1
}
if is_root; then echo root; else echo normal; fiReturnera utdata med echo
Eftersom return endast skickar en statuskod skrivs verkliga utdata ut och fångas med $( ).
timestamp() {
date +%Y%m%d-%H%M%S
}
name="log-$(timestamp).txt"
echo "$name"Lokala variabler
Som standard är variabler i funktioner globala. Använd local för att begränsa en variabel till funktionen och undvika att förorena skalet.
count_lines() {
local n
n=$(wc -l < "$1")
echo "$1 has $n lines"
}Standardvärden för argument
Använd parameterexpansionen ${1:-default} för att använda ett standardvärde när ett argument saknas.
say() {
local msg="${1:-Hello World}"
echo "$msg"
}
say
say "Custom message"Funktioner jämfört med alias
Alias ersätter helt enkelt text och kan inte hantera positionsargument på ett smidigt sätt. Funktioner kan förgrena sig, loopa och bearbeta indata.
- Använd ett alias för en fast genväg
- Använd en funktion när du behöver logik eller argument
alias ll='ls -la'
lt() { ls -la "${1:-.}" | tail -n "${2:-5}"; }Göra funktioner beständiga
Funktioner som definieras vid prompten försvinner när skalet avslutas. Lägg till dem i ~/.bashrc så att de blir tillgängliga i varje session.
# Append to ~/.bashrc
extract() {
case "$1" in
*.tar.gz) tar xzf "$1" ;;
*.zip) unzip "$1" ;;
*) echo "Unknown format" ;;
esac
}Visa och ta bort funktioner
declare -F listar funktionsnamn och declare -f name visar funktionskroppen. Ta bort en funktion med unset -f name.
declare -F
declare -f greet
unset -f greetKombinera funktioner
Funktioner kan anropa andra funktioner, vilket gör det möjligt att kombinera små, återanvändbara delar till större verktyg.
log() { echo "[$(date +%T)] $*"; }
deploy() {
log "Starting deploy"
log "Done"
}
deploySnabbkontroll
Testa dina kunskaper om skalfunktioner.
Sammanfattning
Du har lärt dig att bygga återanvändbara funktioner i skalet:
- Definiera med
name() { ... }och anropa med namnet - Använd
$1,$@och$#för argument samtreturnför status - Begränsa variablers räckvidd med
localoch returnera data viaecho - Gör dem beständiga i
~/.bashrcoch granska dem meddeclare -f
Lär dig DevOps-bootcamp med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 142
- Lektioner
- 568
Vanliga frågor
Är lektionen ”Skalfunktioner och återanvändbara kodsnuttar” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”Skalfunktioner och återanvändbara kodsnuttar”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i DevOps-bootcamp innehåller totalt 4 lektioner.
Vad lär jag mig i ”Skalfunktioner och återanvändbara kodsnuttar”?
Definiera och använd Bash-funktioner för att paketera kommandon i återanvändbara, parametriserade byggblock för skalet. Ni övar på DevOps-bootcamp med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig DevOps-bootcamp?
Du behöver inga förkunskaper. Utbildningen i DevOps-bootcamp på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Skalfunktioner och återanvändbara kodsnuttar”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här DevOps-bootcamp-lektionen?
Ja. Varje DevOps-bootcamp-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Jobbhantering (bg, fg, jobs)
- Skalexpansion och globbning
- Alias och anpassade promptar
- Skalfunktioner och återanvändbara kodsnuttar