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!
linux bash trap set
Commentami!