5まで計算して完了すると、「完了」をエコーするwhileループがあります。 「&」を使用してバックグラウンドでスクリプトを実行し、実行中にコマンドを実行できるようにしたいです。
しかし、完了したら、「完了」というメッセージが表示される前にそれ自体がフォアグラウンドプロセスになることを望みます。その後、新しいコマンドプロンプト行を表示したいと思います。 「\nDone」をエコーでき、バックグラウンドで実行すると、新しいプロンプトを終了/開始するのではなく、出力のみを印刷する理由がわかります。しかし、基本的に、「マージジョブ」が終了する前に再結合することが可能か、スクリプトに組み込まれているジョブコントロールを使用して他の場所に適用できるかどうか疑問に思います。
これは実用的な質問ではなく、単に好奇心です。
i=0
while [ $i -lt 5 ]
do
let i+=1
sleep 1
done
fg
echo "Done"
ベストアンサー1
いいえ - 実行中のプロセスはシェルによってバックグラウンドで処理されるため、これらのタスクを実行できず、どのプロセスがフォアグラウンド/バックグラウンド/一時停止されているかを判断するのがシェルのタスクです。
これを試してみてください - deleteを実行し、バックfg
グラウンドでシェルスクリプトを実行します(つまり、&最後にaを使用します)。完了すると、出力はコンソールにぼやけて表示されます。