Игнорировать первые x строк при выполнении скрипта?

Игнорировать первые x строк при выполнении скрипта?

Я создаю скрипт, который в конечном итоге запускается заново, выполняя себя снова с помощью 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, если он существует, вы уже запускали его раньше. И когда вы закончите, удалите этот файл.

Связанный контент