Ignorar as primeiras x linhas ao executar um script?

Ignorar as primeiras x linhas ao executar um script?

Estou fazendo um script que eventualmente recomeça executando-se novamente usando exec. O problema é que as primeiras linhas só devem ser executadas toda vez que você inicia o script, então estou me perguntando se há algo que eu possa fazer para corrigir isso. Aqui está um exemplo:

echo "welcome"
read yesno

if [[ $something = etc.. ]]; then
whatever
fi

exec ~/bin/script

Isso é simplificado, mas se este fosse o meu script, eu gostaria de ignorar a primeira linha, ( echo). Existe alguma opção que execeu possa adicionar? Quer dizer, eu poderia fazer uma cópia do script e apenas omitir a(s) primeira(s) linha(s), mas parece uma solução ruim.

Responder1

Com uma variável, a coisa óbvia a fazer é passar o resultado do prompt 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

Responder2

Você pode tentar colocar um arquivo temporário em/run, verifique no início se ele existe. Caso contrário, você pode fazer eco, se existir, você já executou antes. E quando terminar, remova esse arquivo.

informação relacionada