Villkorssatser: `if`, `else`, `case`
Implementera beslutslogik i Era skript med hjälp av olika villkorskonstruktioner.
Villkorssatser: `if`, `else`, `case` är en gratis lektion i Bemästra Linux-kommandoraden på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Bemästra Linux-kommandoraden, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Bemästra Linux-kommandoraden innehåller totalt 4 lektioner.
Fatta beslut i skript
I skalskriptning behöver man, precis som i livet, ofta fatta beslut. Villkorssatser gör att dina skript kan köra olika kommandon beroende på om ett visst villkor är sant eller falskt.
Detta är avgörande för att skapa flexibla och kraftfulla skript som kan anpassa sig till olika situationer eller användarinmatningar.
Den grundläggande `if`-satsen
Det enklaste villkoret är if-satsen. Den kontrollerar ett villkor och kör ett block med kommandon om villkoret är sant. Om villkoret är falskt hoppas blocket över.
Den grundläggande syntaxen ser ut så här:
if [ condition ]; then# commands to run if truefi
Kom ihåg fi för att avsluta if-blocket!
Enkelt `if`-exempel
Låt oss se en enkel if-sats i praktiken. Det här skriptet kontrollerar om en variabel num är större än 5.
Prova att ändra värdet på num för att se hur resultatet förändras!
#!/bin/bash
num=7
if [ "$num" -gt 5 ]; then
echo "Number is greater than 5."
fi
num=3
if [ "$num" -gt 5 ]; then
echo "Number is greater than 5. (This won't print)"
fi`if-else`: Två vägar
Vad gör du om du vill köra en uppsättning kommandon när ett villkor är sant och en annan uppsättning när det är falskt? Det är där else kommer in.
if-else-satsen ger skriptet två tydliga vägar:
if [ condition ]; then# commands if condition is trueelse# commands if condition is falsefi
Använda `if-else`
Det här skriptet använder if-else för att avgöra om ett tal är jämnt eller udda. Vi använder den aritmetiska utvärderingen (( )) för tydligare taljämförelser och beräkningar.
Operatorn % ger resten vid en division. Om num % 2 är 0 är talet jämnt!
#!/bin/bash
num=4
if (( num % 2 == 0 )); then
echo "$num is an even number."
else
echo "$num is an odd number."
fi
num=9
if (( num % 2 == 0 )); then
echo "$num is an even number. (This won't print)"
else
echo "$num is an odd number."
fi`elif`: Flera villkor
Ibland finns det fler än två möjliga resultat. I sådana situationer kan du använda elif (förkortning av "else if") för att kontrollera flera villkor i tur och ordning.
Skriptet kontrollerar villkoren ett i taget. Det första villkoret som är sant kör sina kommandon, och resten hoppas över.
if [ cond1 ]; then ...elif [ cond2 ]; then ...else ...fi
En kedja av `elif`
Här är ett exempel som använder if-elif-else för att tilldela ett bokstavsbetyg utifrån ett resultat. Lägg märke till att villkoren kontrolleras från högsta till lägsta resultat.
Om resultatet är 95 uppfylls det första if-villkoret (>= 90), och "A" skrivs ut. De andra elif- och else-blocken ignoreras sedan.
#!/bin/bash
score=85
if [ "$score" -ge 90 ]; then
echo "Grade: A"
elif [ "$score" -ge 80 ]; then
echo "Grade: B"
elif [ "$score" -ge 70 ]; then
echo "Grade: C"
else
echo "Grade: F"
fi`case`: Enkelt val
När du har en enda variabel eller ett uttryck som kan ha många möjliga värden och vill utföra olika åtgärder för varje värde är case-satsen ofta tydligare än en lång kedja av if-elif-else.
Den passar utmärkt för menystyrda skript eller hantering av specifika inmatningsalternativ.
case $variable inpattern1) commands ;;pattern2) commands ;;*) default commands ;;esac
Använda `case`-satser
Det här skriptet visar hur du använder case för att reagera på olika användaråtgärder (starta, stoppa, starta om). Mönstret *) fungerar som standardfall och fångar alla värden som inte matchar något annat.
Varje kommando-block avslutas med ;;, vilket är avgörande för att case-satsen ska fungera korrekt.
#!/bin/bash
action="start"
case "$action" in
"start")
echo "Starting service..."
;;
"stop")
echo "Stopping service..."
;;
"restart")
echo "Restarting service..."
;;
*) # Default case for anything else
echo "Invalid action: $action"
;;
esac
action="status"
case "$action" in
"start") echo "Starting service..." ;;
"stop") echo "Stopping service..." ;;
"restart") echo "Restarting service..." ;;
*) echo "Invalid action: $action" ;;
esacVillkorsutmaning
Läs skriptet nedan noggrant. Vad blir resultatet när skriptet körs?
#!/bin/bash
color="blue"
if [ "$color" == "red" ]; then
echo "It's a primary color."
elif [ "$color" == "yellow" ]; then
echo "It's another primary color."
elif [ "$color" == "blue" ]; then
echo "Yes, blue is primary!"
else
echo "Unknown color."
fiBeslut på ett enkelt sätt
Bra jobbat! Du har lärt dig de grundläggande sätten att lägga till beslutslogik i dina skalskript.
if: Kör kommandon om ett villkor är sant.if-else: Ger två vägar, en för sant och en för falskt.elif: Gör det möjligt att kedja flera villkor för mer komplex logik.case: Ett tydligt sätt att hantera flera val utifrån ett enda värde.
Dessa konstruktioner är nödvändiga för att skriva skript som kan reagera dynamiskt på olika inmatningar och situationer.
Lär dig Bemästra Linux-kommandoraden 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
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Villkorssatser: `if`, `else`, `case`” gratis?
Ja – hela texten till ”Villkorssatser: `if`, `else`, `case`” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Bemästra Linux-kommandoraden, kan Ni uppgradera till CoddyKit PRO. Kursen i Bemästra Linux-kommandoraden innehåller totalt 4 lektioner.
Vad lär jag mig i ”Villkorssatser: `if`, `else`, `case`”?
Implementera beslutslogik i Era skript med hjälp av olika villkorskonstruktioner. Ni övar på Bemästra Linux-kommandoraden 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 Bemästra Linux-kommandoraden?
Du behöver inga förkunskaper. Utbildningen i Bemästra Linux-kommandoraden 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 2 av 4.
Hur lång tid tar lektionen ”Villkorssatser: `if`, `else`, `case`”?
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 Bemästra Linux-kommandoraden-lektionen?
Ja. Varje Bemästra Linux-kommandoraden-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
- Variabler, indata och utdata
- Villkorssatser: `if`, `else`, `case`
- Loopar: `for`, `while`, `until`
- Funktioner och argument i shellskript