Intercettare gli errori in BASH

Mattepuffo's logo
Intercettare gli errori in BASH

Intercettare gli errori in BASH

BASH non ha un concetto di try/catch come molti linguaggi di programmazione, ma possiamo comunque intercettare gli errori in diverse maniere.

Supponiamo di avere uno script per creare una cartella nella root del sistema e di lanciarlo senza i permessi adeguati.

Ovviamente darà un errore.

Vediamo un primo esempio intercettando l'exit status da $?:

#!/bin/bash

mkdir /cartella_test
if [ $? -ne 0 ]; then
  echo "Error: Non è statto possibile creare la cartella"
  exit 1
fi

echo "Cartella creata"

Questo risponderà così:

$ ./test.sh 
mkdir: impossibile creare la directory "/cartella_test": Permesso negato
Error: Non è statto possibile creare la cartlla

Un secondo esempio prevede l'uso di trap:

#!/bin/bash

trap 'echo "Error: Non è statto possibile creare la cartella"; exit 1;' ERR

mkdir /cartella_test

echo "Cartella creata"

Il risultato sarà lo stesso, con una sintassi più concisa.

Sennò possiamo usare set -e:

#!/bin/bash

set -e

mkdir /cartella_test

echo "Cartella creata"

Con questa risposta:

$ ./test.sh 
mkdir: impossibile creare la directory "/cartella_test": Permesso negato

Diciamo che set -e fa tutto da solo.

E voi conoscete altri metodi?

Enjoy!


Condividi

Commentami!