Я создаю скрипт, который в конечном итоге запускается заново, выполняя себя снова с помощью exec
. Проблема в том, что первые несколько строк должны запускаться только каждый раз, когда вы сами запускаете скрипт, поэтому мне интересно, можно ли как-то это исправить. Вот пример:
echo "welcome"
read yesno
if [[ $something = etc.. ]]; then
whatever
fi
exec ~/bin/script
Это упрощено, но если бы это был мой сценарий, я бы хотел проигнорировать первую строку ( echo
). Есть ли какой-то вариант, который exec
я могу добавить? Я имею в виду, что я мог бы сделать копию сценария и просто опустить первую строку(и), но это кажется плохим решением.
решение1
При использовании переменной очевидным решением будет передать результат из предыдущего запроса:
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
решение2
Вы можете попробовать поместить временный файл в /run, проверить при запуске, существует ли он. Если нет, вы можете выполнить echo, если он существует, вы уже запускали его раньше. И когда вы закончите, удалите этот файл.