Feilsøking av Bash-skript (set -x, trap)
Utforsk metoder for å feilsøke Bash-skriptene dine, blant annet ved å spore kjøringen og bruke «trap» til feilhåndtering.
Feilsøking av Bash-skript (set -x, trap) er en gratis leksjon i Mestring av Linux-kommandolinjen og Bash-skripting på CoddyKit. Dette er leksjon 1 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.
Hvorfor feilsøke skriptene?
Selv de beste skriptene kan inneholde feil! Feilsøking er prosessen med å finne og rette disse feilene.
Det er en viktig ferdighet for alle utviklere, fordi den hjelper Dem med å forstå hva skriptet gjør trinn for trinn, og hvor noe kan gå galt.
I denne leksjonen lærer De kraftige Bash-verktøy for å spore kjøringen og håndtere uventede hendelser.
Spor skriptet med `set -x`
Et av de enkleste og mest effektive feilsøkingsverktøyene i Bash er set -x. Det aktiverer kommandosporing.
- Når dette er aktivert, skriver Bash ut hver kommando og argumentene dens til standardfeil (som vanligvis betyr terminalen), rett før kommandoen kjøres.
- Utdataene inkluderer tilstanden til variablene etter ekspandering, slik at De får et tydelig bilde av hva Bash skal gjøre.
- Det er som å se skriptet kjøre i sakte film!
Se `set -x` i praksis
La oss se set -x i praksis. Legg merke til hvordan skallet skriver ut hver kommando etter variabelekspandering, med et +-tegn foran.
Prøv å kjøre dette eksempelet:
#!/bin/bash
# Enable command tracing
set -x
NAME="Coddy"
MESSAGE="Hello, $NAME!"
echo $MESSAGE
# This command will intentionally fail
ls -l /nonexistent_directory
# Disable command tracing
set +x
echo "Tracing is now off."Forstå sporingsutdata
Når set -x er aktivert, ser De linjer som begynner med symbolet +. Dette angir sporingsutdata.
- Etter
+kommer kommandoen Bash skal kjøre, sammen med argumentene etter eventuelle variabel- eller kommandoerstatninger. - Dette er svært nyttig for å se de nøyaktige verdiene til variablene og den presise kommandoen som kjøres.
- Det gjør det enklere å finne problemer som feil stier, tomme variabler eller utilsiktede kommandostrukturer.
Kontroller omfanget til `set -x`
De trenger ikke alltid å spore hele skriptet. De kan aktivere set -x for bestemte deler:
- Bruk
set -xfor å slå sporing på. - Bruk
set +xfor å slå sporing av.
Dette lar Dem konsentrere feilsøkingen om problematiske deler av skriptet uten å bli overveldet av utdata fra stabile deler.
Håndter hendelser med `trap`
Med kommandoen trap kan De fange opp signaler og andre hendelser og deretter kjøre en kommando når de oppstår. Dette er nyttig for:
- Opprydding: Sikre at midlertidige filer fjernes.
- Feilhåndtering: Reagere på kommandoer som mislykkes.
- Kontrollert avslutning: Håndtere brukeravbrudd som Ctrl+C.
Den grunnleggende syntaksen er trap 'command_to_execute' SIGNAL_OR_EVENT.
Opprydding med `trap EXIT`
Pseudosignalet EXIT er spesielt. En kommando som er satt opp med EXIT, kjøres rett før skriptet avsluttes, uavhengig av hvordan det avsluttes (vellykket, med feil eller som følge av et avbrudd).
Dette passer perfekt til oppryddingsoppgaver, som å slette midlertidige filer. Prøv å kjøre dette skriptet:
#!/bin/bash
TEMP_FILE="/tmp/coddy_temp_$(date +%s).txt"
# Trap the EXIT signal to remove the temp file
trap 'echo "Cleaning up: Removing $TEMP_FILE"; rm -f "$TEMP_FILE"' EXIT
echo "Script started. Creating temporary file..."
touch "$TEMP_FILE"
echo "Temporary file created: $TEMP_FILE"
# Simulate some work
sleep 2
echo "Script logic completed. Exiting..."Fang opp feil med `trap ERR`
Pseudosignalet ERR utløses når en kommando avsluttes med en status som ikke er null (det vil si at den mislykkes). Dette lar Dem utføre handlinger spesifikt når det oppstår en feil.
Merk: trap ERR fungerer bare hvis kommandoen ikke er en del av en if-, while- eller until-betingelse, eller hvis returverdien ikke kontrolleres uttrykkelig (for eksempel command || true).
#!/bin/bash
# Trap ERR to report the error line number
trap 'echo "Error detected on line $LINENO! Exiting."' ERR
echo "Starting script with an intentional error..."
# This command will fail and trigger the ERR trap
ls /this/path/does/not/exist
echo "This line will NOT be reached if an error occurs."Reager på signaler (INT, TERM)
trap kan også fange opp standard Linux-signaler. Vanlige signaler inkluderer:
INT(Interrupt): Sendes når De trykker påCtrl+C.TERM(Terminate): En forespørsel om å avslutte en prosess på en kontrollert måte.
Ved å fange opp disse signalene kan skriptet utføre opprydding eller lagre tilstanden før det avsluttes, i stedet for å avslutte brått.
#!/bin/bash
# Trap INT (Ctrl+C) to exit gracefully
trap 'echo "\nCaught Ctrl+C! Exiting gracefully..."; exit 1' INT
echo "Running a continuous task. Press Ctrl+C to stop."
while true; do
echo "Working... $(date)"
sleep 3
doneKontroller feilsøkingen
La oss kontrollere forståelsen Deres av feilsøkingsteknikker i Bash.
Oppsummering: Feilsøking av skriptene Deres
Godt jobbet! De har lært viktige verktøy for å feilsøke Bash-skriptene Deres:
set -x: Aktiverer kommandosporing og viser nøyaktig hva Bash kjører. Brukset +xfor å slå det av.trap: Lar Dem kjøre kommandoer som svar på bestemte hendelser eller signaler.- `trap EXIT`: Sikrer at oppryddingsoppgaver kjøres før skriptet avsluttes.
- `trap ERR`: Fanger opp kommandoer som avsluttes med en status som ikke er null.
- `trap INT`/`TERM`: Håndterer brukeravbrudd eller forespørsler om avslutning på en kontrollert måte.
Når De behersker disse teknikkene, blir De betydelig bedre i stand til å feilsøke og lage robuste Bash-skript!
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 «Feilsøking av Bash-skript (set -x, trap)» gratis?
Ja – hele teksten i «Feilsøking av Bash-skript (set -x, trap)» 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 «Feilsøking av Bash-skript (set -x, trap)»?
Utforsk metoder for å feilsøke Bash-skriptene dine, blant annet ved å spore kjøringen og bruke «trap» til feilhåndtering. 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 1 av 4.
Hvor lang tid tar leksjonen «Feilsøking av Bash-skript (set -x, trap)»?
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
- Feilsøking av Bash-skript (set -x, trap)
- Feilhåndtering og avslutningsstatus
- Beste praksis for skripting og linting
- Testing av Bash-skript med Bats