Estoy creando un script que eventualmente comienza de nuevo ejecutándose nuevamente usando exec
. El problema es que se supone que las primeras líneas solo deben ejecutarse cada vez que inicia el script usted mismo, así que me pregunto si hay algo que pueda hacer para solucionar este problema. He aquí un ejemplo:
echo "welcome"
read yesno
if [[ $something = etc.. ]]; then
whatever
fi
exec ~/bin/script
Esto está simplificado, pero si este fuera mi script, me gustaría ignorar la primera línea ( echo
). ¿Hay alguna opción que exec
pueda agregar? Quiero decir, podría hacer una copia del guión y simplemente omitir las primeras líneas, pero parece una mala solución.
Respuesta1
Con una variable, lo obvio es pasar el resultado del mensaje anterior:
if [[ -z "$yesno" ]]; then
echo "welcome"
read yesno
fi
if [[ $something = etc.. ]]; then
whatever
fi
# doing it this way makes it exported into the subprocess
yesno=$yesno exec ~/bin/script
Respuesta2
Puede intentar colocar un archivo temporal en /run, verificar al inicio si existe. Si no, puedes hacer eco; si existe, lo has ejecutado antes. Y cuando termines elimina ese archivo.