私の2つの例は次のとおりです。
echo hi &
そして:
(echo hi &)
1つ目はプロセスIDを返します(例:)として提供し"[1] 5627"
、優先順位演算子を追加すると削除されます。何が起こったのでしょうか?
また、優先順位を追加しながら、バックグラウンドジョブにそのプロセスIDを報告させる方法はありますか?
答え1
これはおおよそ職業管理。そのセクションを読んでくださいman bash
。
シェルの括弧は単純な優先順位演算子ではありません。彼らは新しい(サブ)シェルを始めます。
通常、ジョブ制御が有効になっている対話型シェルに入力します。コマンドを括弧で囲むと、ジョブ制御なしでサブシェルでコマンドが実行されます。
努力する:
sleep 10&
jobs
(sleep 10&)
jobs
最初のスリープモードは、jobs
ジョブ制御が有効なシェルで開始されたためにリストされます。 2番目はサブシェルによって開始されるため、そうではありません。