2
コマンドを実行したいとき、コマンドが開始されたときにすぐにファイルにプロセスIDを書き込んでから、コマンドの終了ステータスを取得します。つまり、プロセスIDは即座に書き込まなければならないが、初期コマンドが終了したときに終了ステータスが必要になる。プロセスIDを書き込んで、最後のコマンドの終了コードを取得する方法
次のステートメントは残念なことにコマンドを実行し、即座にプロセスIDを書き込みますが、コマンドが完了するのを待つことはありません。さらに、最初のコマンドではなく、echoコマンドの終了ステータスのみを取得します。
の場合はrdiff-backupです。
どのようにステートメントを変更する必要がありますか?
<command> & echo $! > "/pid_file"
RESULT=$?
if [ "$RESULT" -ne "0" ]; then
echo "Finished with errors"
fi
は私と一緒に動作するようです。 1つの質問:なぜあなたは変数** child_status **を呼び出しましたか? ** _ command_for_background _ **は、変数** child_status **に格納されている終了コードの親プロセスであり、** echo $!**は子プロセスですか?これは単なる命名ですが、私は混乱したくありません。 – Sebastian
技術的には 'command_for_background'と' echo'の両方が子供だと思いますが、あなたが興味を持っているのは 'command_for_background'です。後者はあなたが待っているものなので、それを子供と呼ぶのが理にかなっています。 – eewanco