Bemästra Linux-kommandoraden · Lektion

Villkorssatser: `if`, `else`, `case`

Implementera beslutslogik i Era skript med hjälp av olika villkorskonstruktioner.

Lektion 2 av 411 steg

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 true
  • fi

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 true
  • else
  • # commands if condition is false
  • fi

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 in
  • pattern1) 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" ;;

esac

Villkorsutmaning

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."
fi

Beslut 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.

Gratis att börja

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

  1. Variabler, indata och utdata
  2. Villkorssatser: `if`, `else`, `case`
  3. Loopar: `for`, `while`, `until`
  4. Funktioner och argument i shellskript
← Tillbaka till Bemästra Linux-kommandoraden