私は、 を使用して再度実行することで最終的に最初からやり直すスクリプトを作成しています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 を実行できます。存在する場合は、以前に実行したことになります。終了したら、そのファイルを削除します。