Ho un po 'di codice di pulizia generico che deve essere eseguito ogni volta che un certo script bash termina, indipendentemente dal fatto che sia uscito normalmente o sia stato interrotto. Ho pensato che avrei usato lo pseudosignal trap "..." EXIT
per raggiungere questo obiettivo.L'acquisizione del segnale di Bash non rileva le variabili modificate dopo la dichiarazione del blocco "trap"
Oltre alla pulizia generica, c'è anche un pezzo di pulizia specifica che dovrebbe essere eseguita solo se lo script viene completato normalmente. Ho pensato che avrei potuto scatenare questo avendo blocco 'trappola' testare una variabile, in questo modo:
#!/bin/bash
done=false;
trap "{
#generic cleanup code goes here.
if $done
then
#cleanup to be done only on completion goes here.
echo Test;
fi
}" EXIT
#main script goes here
done=true;
Tuttavia, questo non funziona. Eseguendo il seguente codice non verrà mai echo "Test". L'aggiunta di una chiamata exit
esplicita dopo done=true;
non modifica nulla. Cosa mi manca?
Cheers!