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 exec
eu 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.