1,499 21/03/2026 07/04/2026 3 min

Nell’ambito dell’automazione con script Bash, la gestione degli errori è fondamentale. Quando un task fallisce, è cruciale sapere come diagnosticare il problema e come ripristinare il sistema allo stato precedente. In questo articolo, esploreremo come implementare una logica di gestione degli errori negli script Bash.

Prerequisiti

  • Un sistema Linux con Bash installato (versione 4.0 o successiva).
  • Accesso a un terminale con privilegi di modifica.

Step per Gestire gli Errori negli Script Bash

1. Creazione di uno Script di Base

Iniziamo creando un semplice script. Questo script simulerà un processo che potrebbe fallire.

#!/bin/bash

# Esempio di uno script

echo "Inizio del Task"

# Simuliamo un errore con un comando inesistente
comando_inesistente

# Output atteso: Error: comando_inesistente: comando non trovato

Quando eseguiamo questo script, otterremo un errore. Vogliamo gestire questo errore e fermare l’esecuzione dello script.

2. Utilizzo di Exit Codes

Ogni comando in Bash ritorna un codice di uscita. Un codice di uscita zero indica successo, mentre un codice diverso da zero indica un errore. Possiamo usare if per verificare il codice di uscita subito dopo l’esecuzione di un comando.

#!/bin/bash

echo "Inizio del Task"

# Simuliamo un errore
comando_inesistente

# Controllo del codice di uscita
if [ $? -ne 0 ]; then
    echo "Si è verificato un errore!"
    exit 1
fi

Perché funziona: Verifichiamo il codice di uscita del comando precedente usando $?.

3. Implementazione di un Rollback

Se un errore si verifica, è utile avere un meccanismo di rollback. Creiamo una funzione di rollback per ripristinare il sistema allo stato precedente.

#!/bin/bash

function rollback() {
    echo "Ripristino dello stato precedente..."
    # Comandi di ripristino qui
}

echo "Inizio del Task"

comando_inesistente

if [ $? -ne 0 ]; then
    echo "Si è verificato un errore!"
    rollback
    exit 1
fi

Con questa funzione, possiamo eseguire comandi specifici per ripristinare il sistema.

4. Log degli Errori

È utile registrare gli errori in un file di log per analisi future. Possiamo reindirizzare l’output degli errori a un file.

#!/bin/bash

LOGFILE="error.log"

function rollback() {
    echo "Ripristino dello stato precedente..."
    # Comandi di ripristino qui
}

echo "Inizio del Task" >> $LOGFILE

comando_inesistente 2>> $LOGFILE

if [ $? -ne 0 ]; then
    echo "Si è verificato un errore!" >> $LOGFILE
    rollback
    exit 1
fi

Adesso, ogni errore verrà registrato nel file di log specificato.

Verifica Finale

Dopo aver implementato la gestione degli errori, esegui il tuo script per verificare che funzioni correttamente. Assicurati che:

  • Gli errori vengano catturati e loggati correttamente.
  • La funzione di rollback venga eseguita quando un errore si verifica.

Troubleshooting

Chiariamo alcuni comuni errori che potresti incontrare:

Errore 1: Comando non trovato

Messaggio: comando_inesistente: comando non trovato

Cause: Il comando specificato non esiste.

Fix: Controlla il nome del comando o installa il pacchetto necessario.

Errore 2: Permessi negati

Messaggio: Permission denied

Cause: Non si hanno sufficienti privilegi per eseguire il comando.

Fix: Esegui lo script con sudo o modifica i permessi del file.

Errore 3: File di log non scrivibile

Messaggio: cannot open 'error.log': Permission denied

Cause: Non si possono scrivere dati nel file di log.

Fix: Assicurati che il file di log sia scrivibile dal tuo utente.

Conclusione

Gestire gli errori negli script Bash è essenziale per garantire che le automazioni funzionino senza intoppi. Utilizzare exit codes e implementare rollback sono passaggi fondamentali. Prossimo passo: prova a estendere il tuo script per includere ulteriori funzionalità, come la gestione di input non validi o la richiesta di conferma prima di eseguire azioni critiche.