Mestring av Linux-kommandolinjen og Bash-skripting · leksjon

Feilhåndtering og avslutningsstatus

Implementer robust feilsjekking i skriptene dine ved å forstå avslutningsstatus og bruke «set -e» og betinget logikk.

Leksjon 2 av 411 trinn

Feilhåndtering og avslutningsstatus er en gratis leksjon i Mestring av Linux-kommandolinjen og Bash-skripting på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Mestring av Linux-kommandolinjen og Bash-skripting, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Mestring av Linux-kommandolinjen og Bash-skripting inneholder totalt 4 leksjoner.

Velkommen til feilhåndtering

I denne leksjonen skal De gjøre Bash-skriptene Deres mer robuste ved å lære hvordan De håndterer feil effektivt.

Se for Dem et skript som utfører mange trinn. Hvis ett trinn mislykkes, ønsker De at skriptet skal stoppe, eller i det minste vite at det oppstod en feil, ikke sant? Det er her feilhåndtering kommer inn!

Hva er en avslutningsstatus?

Hver kommando De kjører i Linux-skallet, returnerer en avslutningsstatus (noen ganger kalt avslutningskode eller returkode).

  • Status 0 betyr at kommandoen ble fullført vellykket.
  • En status som ikke er null (for eksempel 1, 2 eller 127) angir en form for feil eller mislykket kjøring.

Det fungerer omtrent som et trafikklys for kommandoene Deres!

Kontroller avslutningsstatus manuelt

De kan kontrollere avslutningsstatusen til den sist kjørte kommandoen ved hjelp av spesialvariabelen $?.

La oss prøve én vellykket kommando og én som mislykkes:

#!/bin/bash

echo "Hello CoddyKit"
echo "Exit status: $?"

ls non_existent_file.txt
echo "Exit status: $?"

Grunnleggende betinget feilsjekk

Når De kjenner avslutningsstatusen, kan skriptet ta beslutninger. De kan bruke en if-setning til å kontrollere $? og reagere på feil.

Dette gjør skriptet oppmerksomt på problemer og hindrer det i å fortsette med ugyldige data.

#!/bin/bash

ls non_existent_file.txt

if [ $? -ne 0 ]; then
  echo "Error: The 'ls' command failed!"
  exit 1 # Exit script with an error code
fi

echo "This line will not run if 'ls' fails."

Kraften i `set -e`

Det kan være tungvint å kontrollere $? etter hver kommando manuelt. Det er her set -e er nyttig!

Når De starter et skript med set -e, avslutter Bash umiddelbart hvis en kommando (som ikke er del av en betinget test) avsluttes med en status som ikke er null.

Det fungerer som en global sikkerhetsbryter for skriptene Deres!

`set -e` i praksis

La oss se hvordan set -e hindrer et skript i å fortsette etter en feil. Legg merke til hvordan den siste echo-kommandoen aldri blir kjørt.

#!/bin/bash
set -e

echo "Starting important tasks..."

# This command will fail
cp /non_existent_source /tmp/destination

echo "This line will NOT be printed if 'cp' fails."
echo "All tasks completed successfully."

Når `set -e` ikke stopper

set -e er kraftig, men har bestemte regler. Det fører ikke til at skriptet avsluttes hvis kommandoen som mislykkes:

  • er en del av en if- eller while-betingelse.
  • er en del av en &&- eller ||-liste (bortsett fra den siste kommandoen).
  • står etter !.

Disse kontekstene er laget for å teste om noe lykkes eller mislykkes, så `set -e` forstyrrer ikke.

Kombiner `set -e` med `||`

Noen ganger ønsker De å vise en egendefinert feilmelding før skriptet avsluttes. De kan kombinere set -e med ||-operatoren (ELLER).

command || { echo "Error message"; exit 1; }

Hvis command mislykkes, kjøres delen etter ||, meldingen skrives ut, og skriptet avsluttes deretter med en bestemt feilkode.

#!/bin/bash
set -e

echo "Attempting to find a file..."

find /non_existent_dir -name "*.txt" || \
  { echo "ERROR: Could not search in /non_existent_dir!"; exit 1; }

echo "Script continued (this won't print if 'find' fails)."

Håndter bestemte avslutningskoder

Selv om 0 betyr at noe lykkes og en status som ikke er null betyr feil, kan bestemte koder som ikke er null ha ulike betydninger.

  • 1: Generell feil.
  • 2: Feil bruk av innebygde skallkommandoer.
  • 127: Kommandoen ble ikke funnet.

De kan bruke if [ $? -eq 127 ] for å kontrollere bestemte feiltyp­er og dermed gi mer tilpassede feilmeldinger.

Quiz om feilhåndtering

Hvilket av følgende utsagn om Bash-avslutningsstatuser og feilhåndtering er RIKTIG?

Oppsummering: Robuste skript

De har lært hvordan Bash-skriptene Deres kan bli langt mer pålitelige!

  • Hver kommando returnerer en avslutningsstatus (0 ved suksess, en status som ikke er null ved feil).
  • Variabelen $? gir avslutningsstatusen til den siste kommandoen.
  • set -e er et kraftig verktøy som automatisk avslutter skriptet ved de fleste kommando-feil.
  • Kombiner set -e med || for egendefinerte feilmeldinger.

Ved å bruke disse teknikkene kan De skrive mer profesjonelle og stabile skript.

Gratis å komme i gang

Lær deg Bash med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
22
Leksjoner
88

Ofte stilte spørsmål

Er leksjonen «Feilhåndtering og avslutningsstatus» gratis?

Ja – hele teksten i «Feilhåndtering og avslutningsstatus» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Mestring av Linux-kommandolinjen og Bash-skripting-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Mestring av Linux-kommandolinjen og Bash-skripting inneholder totalt 4 leksjoner.

Hva lærer jeg i «Feilhåndtering og avslutningsstatus»?

Implementer robust feilsjekking i skriptene dine ved å forstå avslutningsstatus og bruke «set -e» og betinget logikk. Du øver på Mestring av Linux-kommandolinjen og Bash-skripting med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Mestring av Linux-kommandolinjen og Bash-skripting?

Ingen tidligere erfaring er nødvendig. Mestring av Linux-kommandolinjen og Bash-skripting på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Feilhåndtering og avslutningsstatus»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Mestring av Linux-kommandolinjen og Bash-skripting-leksjonen?

Ja. Alle Mestring av Linux-kommandolinjen og Bash-skripting-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Feilsøking av Bash-skript (set -x, trap)
  2. Feilhåndtering og avslutningsstatus
  3. Beste praksis for skripting og linting
  4. Testing av Bash-skript med Bats
← Tilbake til Mestring av Linux-kommandolinjen og Bash-skripting