¿Cómo salir si la declaración en bash sin salir del programa?
Reescribiendo esta pregunta para evitar más votos negativos, ya que es demasiado tarde para eliminarla:
Estoy escribiendo un script que le pide confirmación a un usuario y antessourcing
Algunos otros guiones. Para simplificar el código, imagine que hay dos scripts que podrían sersourced
, pero quiero que el usuariosource
ninguno o exactamente uno de los guiones, no ambos. Estaba tratando de usar una declaración del formularioif true source-script else exit
que no funcionaba porque saldría delif
declaración, pero también el script en su conjunto, y no tendría la oportunidad de hacer la limpieza necesaria. Originalmente, mi guión se parecía a esto:
echo "This script might do something terrible to your computer."
read -p "Do you wish to continue? (y/[n]) " -n 1;
echo
if ! [[ $REPLY =~ ^[Yy]$ ]]
then
source "terrible_script.sh"
# want some way to ensure that we don't prompt the user about the next script
# don't want to just exit if the response is 'n' because we have to do cleanup
fi
echo "This script might do something really good to your computer."
read -p "Do you wish to continue? (y/[n]) " -n 1;
echo
if ! [[ $REPLY =~ ^[Yy]$ ]]
then
source "good_script.sh"
fi
# do cleanup here
# regardless of whether or not any scripts were sourced
@ charles-duffy proporcionó la respuesta: simplemente envuelva los mensajes en una función. Algo como:
function badscript() {
echo "This script might do something terrible to your computer."
read -p "Do you wish to continue? (y/[n]) " -n 1;
echo
if ! [[ $REPLY =~ ^[Yy]$ ]]
then
source "terrible_script.sh"
return 0
fi
}
function goodscript() {
echo "This script might do something really good to your computer."
read -p "Do you wish to continue? (y/[n]) " -n 1;
echo
if ! [[ $REPLY =~ ^[Yy]$ ]]
then
source "good_script.sh"
fi
}
if ! badscript
then
goodscript
fi
# cleanup code here