case-satsen och mönstermatchning
Skapa tydliga grenar för många värden. Lär dig case-satsen, globmönster, matchning med flera mönster och varför detta är bättre än långa if-elif-kedjor.
case-satsen och mönstermatchning ä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 case?
När en variabel kan ha många värden blir en lång kedja med if/elif/elif snabbt svåröverskådlig. case-satsen matchar ett värde mot mönster och är mycket mer lättläst.
Grundläggande syntax
Ett case-block testar ett värde mot mönster. Varje gren avslutas med ) och dess innehåll avslutas med ;;. Hela blocket avslutas med esac.
case "$fruit" in
apple) echo "red";;
banana) echo "yellow";;
esacStandardfallet
Mönstret *) matchar vad som helst och fungerar som en standardgren, ungefär som else.
case "$cmd" in
start) echo "starting";;
stop) echo "stopping";;
*) echo "unknown command";;
esacMatcha flera mönster
Använd | för att matcha flera mönster i samma gren.
case "$ans" in
y|Y|yes) echo "Confirmed";;
n|N|no) echo "Cancelled";;
esacGlobmönster
Mönster använder skalets globbning, inte reguljära uttryck: * matchar valfri sträng, ? ett valfritt enskilt tecken och [...] en teckenklass.
case "$file" in
*.txt) echo "text file";;
*.jpg|*.png) echo "image";;
esacTeckenintervall
Hakparentesmönster matchar intervall, vilket är praktiskt när ni vill gruppera efter första bokstaven eller siffran.
case "$ch" in
[a-z]) echo "lowercase";;
[0-9]) echo "digit";;
esacEn enkel meny
case passar utmärkt i skript som styrs av menyer där användaren väljer ett alternativ.
read -p "Choice: " opt
case "$opt" in
1) backup;;
2) restore;;
*) echo "Invalid";;
esaccase jämfört med if
Använd if för komplexa booleska villkor (intervall, jämförelser, flera variabler). Använd case när ni förgrenar utifrån värdet eller mönstret för en enda variabel.
Citera värdet
Citera värdet som testas ("$var") så att tomma värden eller värden som innehåller blanksteg hanteras säkert.
case "$input" in
"") echo "empty";;
*) echo "got: $input";;
esacFortsättning med ;;&
Bash stöder ;;& för att fortsätta testa senare mönster efter en matchning, vilket gör att flera grenar kan köras.
case "$f" in
*.tar) echo "tar";;&
*.gz) echo "gzip";;
esacArgumentstyrning
En vanlig praktisk användning är att styra utifrån det första skriptargumentet för att implementera underkommandon, som i ett CLI-verktyg.
case "$1" in
init) do_init;;
build) do_build;;
*) echo "usage: $0 {init|build}";;
esacSnabbtest
Testa er förståelse.
Sammanfattning
Ni har lärt er case-satsen: matcha ett värde mot globmönster, avsluta grenar med ;;, kombinera mönster med |, använd *) som standard och föredra case framför långa if-elif-kedjor för tydlig värdebaserad styrning och argumentstyrning.
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 ”case-satsen och mönstermatchning” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen DevOps-bootcamp, inklusive ”case-satsen och mönstermatchning”, 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 ”case-satsen och mönstermatchning”?
Skapa tydliga grenar för många värden. Lär dig case-satsen, globmönster, matchning med flera mönster och varför detta är bättre än långa if-elif-kedjor. 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 ”case-satsen och mönstermatchning”?
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
- Loopkonstruktioner (for, while)
- Funktioner i Bash-skript
- Skriptargument och alternativ ($@, $#, getopts)
- case-satsen och mönstermatchning