スクリプトを実行するときに最初の 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 を実行できます。存在する場合は、以前に実行したことになります。終了したら、そのファイルを削除します。

関連情報