を使用して再実行して再起動するスクリプトを作成しています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に一時ファイルを配置し、起動時にそのファイルが存在することを確認できます。そうでない場合は、存在する場合は以前に実行したことがあることを再エコーできます。完了したら、ファイルを削除してください。