¿Ignorar las primeras x líneas al ejecutar un script?

¿Ignorar las primeras x líneas al ejecutar un script?

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 execpueda 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.

información relacionada