0Pricing
Linux Command Line & Bash Scripting Mastery · Lezione

Debug degli script Bash (set -x, trap)

Scopra i metodi per eseguire il debug dei Suoi script Bash, inclusi il tracciamento dell’esecuzione e l’uso di «trap» per la gestione degli errori.

Debug degli script Bash (set -x, trap) è una lezione Linux Command Line & Bash Scripting Mastery gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Linux Command Line & Bash Scripting Mastery, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Linux Command Line & Bash Scripting Mastery include 4 lezioni in totale.

Perché eseguire il debug degli script?

Anche gli script migliori possono contenere bug! Il debug è il processo di individuazione e correzione di questi errori.

È una competenza fondamentale per qualsiasi sviluppatore, perché aiuta a capire passo dopo passo cosa sta facendo lo script e dove potrebbero verificarsi problemi.

In questa lezione imparerà a usare potenti strumenti Bash per tracciare l'esecuzione e gestire gli eventi imprevisti.

Tracciare lo script con `set -x`

Uno degli strumenti di debug più semplici ed efficaci in Bash è set -x. Questa opzione abilita la tracciatura dei comandi.

  • Quando è attiva, Bash stampa ogni comando e i relativi argomenti sull'errore standard (che normalmente corrisponde al terminale) subito prima di eseguirlo.
  • Questo output include lo stato delle variabili dopo l'espansione, offrendo una visione chiara di ciò che Bash sta per eseguire.
  • È come osservare l'esecuzione dello script al rallentatore!

Vedere `set -x` in azione

Vediamo set -x in azione. Noti come la shell stampi ogni comando dopo l'espansione delle variabili, preceduto dal simbolo +.

Provi a eseguire questo esempio:

#!/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."

Capire l'output della traccia

Quando set -x è abilitato, vedrà righe che iniziano con il simbolo +. Questo indica un output di tracciatura.

  • Dopo + viene riportato il comando che Bash sta per eseguire, insieme ai relativi argomenti dopo eventuali sostituzioni di variabili o comandi.
  • È estremamente utile per visualizzare i valori esatti delle variabili e il comando preciso in esecuzione.
  • Aiuta a individuare problemi come percorsi errati, variabili vuote o strutture di comando indesiderate.

Controllare l'ambito di `set -x`

Non è sempre necessario tracciare l'intero script. Può abilitare set -x per sezioni specifiche:

  • Usi set -x per attivare la tracciatura.
  • Usi set +x per disattivare la tracciatura.

In questo modo potrà concentrare il debug sulle parti problematiche dello script senza essere sommerso dall'output delle sezioni che funzionano correttamente.

Gestire gli eventi con `trap`

Il comando trap consente di intercettare segnali e altri eventi, quindi di eseguire un comando quando si verificano. È particolarmente utile per:

  • Pulizia: garantire la rimozione dei file temporanei.
  • Gestione degli errori: reagire ai comandi non riusciti.
  • Uscite controllate: gestire interruzioni dell'utente come Ctrl+C.

La sintassi di base è trap 'command_to_execute' SIGNAL_OR_EVENT.

Pulizia con `trap EXIT`

Il pseudo-segnale EXIT è speciale. Un comando associato a EXIT viene eseguito subito prima della terminazione dello script, indipendentemente da come questo termina (con successo, errore o interruzione).

È perfetto per le attività di pulizia, come eliminare i file temporanei. Provi a eseguire questo script:

#!/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..."

Intercettare gli errori con `trap ERR`

Il pseudo-segnale ERR si attiva quando un comando termina con uno stato diverso da zero (cioè quando non riesce). Questo consente di eseguire azioni specifiche quando si verifica un errore.

Nota: trap ERR funziona solo se il comando non fa parte di una condizione if, while o until, oppure se il relativo valore restituito non viene verificato esplicitamente (ad esempio, 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."

Reagire ai segnali (INT, TERM)

trap può anche intercettare i segnali Linux standard. Tra i più comuni vi sono:

  • INT (Interrupt): viene inviato quando si preme Ctrl+C.
  • TERM (Terminate): una richiesta di terminare un processo in modo controllato.

Intercettando questi segnali, lo script può eseguire la pulizia o salvare lo stato prima di arrestarsi, invece di terminare bruscamente.

#!/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
done

Verifica del debug

Verifichiamo la Sua comprensione delle tecniche di debug di Bash.

Riepilogo: eseguire il debug degli script

Ottimo lavoro! Ha imparato gli strumenti essenziali per eseguire il debug degli script Bash:

  • set -x: abilita la tracciatura dei comandi, mostrando esattamente ciò che Bash esegue. Usi set +x per disattivarla.
  • trap: consente di eseguire comandi in risposta a eventi o segnali specifici.
  • `trap EXIT`: garantisce l'esecuzione delle attività di pulizia prima della fine dello script.
  • `trap ERR`: intercetta i comandi che terminano con uno stato diverso da zero.
  • `trap INT`/`TERM`: gestisce in modo controllato le interruzioni dell'utente o le richieste di terminazione.

La padronanza di queste tecniche migliorerà notevolmente la Sua capacità di risolvere i problemi e creare script Bash robusti!

Domande Frequenti

La lezione «Debug degli script Bash (set -x, trap)» è gratuita?

Sì — il testo completo di «Debug degli script Bash (set -x, trap)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Linux Command Line & Bash Scripting Mastery, passa a CoddyKit PRO. Il corso Linux Command Line & Bash Scripting Mastery include 4 lezioni in totale.

Cosa imparerò in «Debug degli script Bash (set -x, trap)»?

Scopra i metodi per eseguire il debug dei Suoi script Bash, inclusi il tracciamento dell’esecuzione e l’uso di «trap» per la gestione degli errori. Eserciti Linux Command Line & Bash Scripting Mastery con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Linux Command Line & Bash Scripting Mastery?

Non è richiesta alcuna esperienza precedente. Linux Command Line & Bash Scripting Mastery su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Debug degli script Bash (set -x, trap)»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Linux Command Line & Bash Scripting Mastery?

Sì. Ogni lezione Linux Command Line & Bash Scripting Mastery include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Debug degli script Bash (set -x, trap)
  2. Gestione degli errori e stato di uscita
  3. Buone pratiche di scripting e linting
  4. Testare gli script Bash con Bats
← Torna a Linux Command Line & Bash Scripting Mastery