バックグラウンドで別のスクリプトを起動して終了するスクリプトがあります。子スクリプトがなくなることを期待していましたが、最終的にはまだ何らかの出力を出力できます。次に例を示します。
スクリプト one.sh:
echo "this is one"
./two.sh &
sleep 1
pid=$!
kill $pid
echo "this was one"
スクリプト two.sh で:
echo "this is two"
./three.sh
echo "this was two"
スクリプト three.sh:
echo "this is three"
sleep 5
echo "this was three"
バックグラウンドで two.sh を実行するはずの ./one.sh を実行しました。これは、バックグラウンドではなく three.sh を実行します! 出力は次のとおりです。
this is one
this is two
this is three
this was one
this was three
three.sh がバックグラウンドで実行されず、two.sh が one.sh によって終了されたため、「this was three」は出力に表示されませんか? また、プロセスがバックグラウンドである場合 (そうでない場合) にどのように動作するか、およびプロセスが終了したときに何が起こるかを説明しているドキュメントを教えてください。
いつもお世話になっております!