Tengo un montón de código de limpieza genérico que debe hacerse cada vez que sale cierto script bash, ya sea que salió normalmente o se interrumpió. Pensé que usaría la pseudosignal trap "..." EXIT
para lograr esto.Captura de señal bash no detecta las variables modificadas después de la declaración del bloque 'trap'
Además de la limpieza genérica, también hay una pieza de limpieza específica que solo debe realizarse si la secuencia de comandos se completa normalmente. Pensé que podría desencadenar esto haciendo que el bloque 'trampa' probar una variable, así:
#!/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;
Sin embargo, esto no funciona. Ejecutando el siguiente código nunca se repetirá "Test". Agregar una llamada exit
explícita después de done=true;
no cambia nada. ¿Qué me estoy perdiendo?
¡Salud!