case-sætningen og mønstergenkendelse
Forgren programmet overskueligt ud fra mange værdier. Lær case-sætningen, glob-mønstre, matchning af flere mønstre, og hvorfor det er bedre end lange if-elif-kæder.
case-sætningen og mønstergenkendelse er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvorfor case?
Når en variabel kan have mange værdier, bliver en lang kæde af if/elif/elif hurtigt rodet. case-sætningen sammenholder en værdi med mønstre og er langt mere læsevenlig.
Grundlæggende syntaks
En case-blok tester en værdi mod mønstre, der hver afsluttes med ), og en krop, der afsluttes med ;;. Hele blokken afsluttes med esac.
case "$fruit" in
apple) echo "red";;
banana) echo "yellow";;
esacStandardtilfældet
Mønsteret *) matcher alt og fungerer som en standard, der fanger alt, ligesom else.
case "$cmd" in
start) echo "starting";;
stop) echo "stopping";;
*) echo "unknown command";;
esacMatch flere mønstre
Brug | til at matche flere mønstre i samme gren.
case "$ans" in
y|Y|yes) echo "Confirmed";;
n|N|no) echo "Cancelled";;
esacGlob-mønstre
Mønstre bruger shell-globbing, ikke regulære udtryk: * matcher enhver tekststreng, ? ethvert enkelt tegn, og [...] en tegnklasse.
case "$file" in
*.txt) echo "text file";;
*.jpg|*.png) echo "image";;
esacTegnområder
Kantede parentesmønstre matcher områder, hvilket er praktisk til gruppering efter første bogstav eller ciffer.
case "$ch" in
[a-z]) echo "lowercase";;
[0-9]) echo "digit";;
esacEn enkel menu
case er særligt velegnet i menustyrede scripts, hvor brugeren vælger en indstilling.
read -p "Choice: " opt
case "$opt" in
1) backup;;
2) restore;;
*) echo "Invalid";;
esaccase kontra if
Brug if til komplekse booleske betingelser (intervaller, sammenligninger, flere variable). Brug case, når du forgrener efter værdien eller mønsteret for en enkelt variabel.
Sæt værdien i anførselstegn
Sæt den testede værdi ("$var") i anførselstegn, så tomme værdier eller værdier med mellemrum behandles sikkert.
case "$input" in
"") echo "empty";;
*) echo "got: $input";;
esacGennemfald med ;;&
Bash understøtter ;;& til at fortsætte testen af senere mønstre efter et match, så flere grene kan aktiveres.
case "$f" in
*.tar) echo "tar";;&
*.gz) echo "gzip";;
esacArgumentfordeling
En almindelig anvendelse i praksis er at fordele efter det første scriptargument for at implementere underkommandoer som i et CLI-værktøj.
case "$1" in
init) do_init;;
build) do_build;;
*) echo "usage: $0 {init|build}";;
esacHurtigt tjek
Test din forståelse.
Opsummering
Du har lært case-sætningen: match en værdi mod glob-mønstre, afslut grene med ;;, kombiner mønstre med |, brug *) som standard, og foretræk case frem for lange if-elif-kæder ved ren værdibaseret forgrening og argumentfordeling.
Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 142
- Lektioner
- 568
Ofte stillede spørgsmål
Er lektionen “case-sætningen og mønstergenkendelse” gratis?
Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “case-sætningen og mønstergenkendelse”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “case-sætningen og mønstergenkendelse”?
Forgren programmet overskueligt ud fra mange værdier. Lær case-sætningen, glob-mønstre, matchning af flere mønstre, og hvorfor det er bedre end lange if-elif-kæder. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?
Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “case-sætningen og mønstergenkendelse”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?
Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Løkker (for, while)
- Funktioner i Bash-scripts
- Scriptargumenter og indstillinger ($@, $#, getopts)
- case-sætningen og mønstergenkendelse