web-dev-qa-db-ja.com

Bashスクリプトで、「$!」の意味は何ですか?

で変数を割り当てている場合

temp=$!

その価値は何でしょうか?

44
Chen A.

$!には、最後に実行されたバックグラウンドパイプラインのプロセスIDが含まれています。 man bash

特別なパラメータ

シェルはいくつかのパラメーターを特別に扱います。これらのパラメーターは参照されるだけです。それらへの割り当ては許可されていません。

...

!-最後に実行されたバックグラウンド(非同期)コマンドのプロセスIDに展開されます。

例えば:

$ sleep 60 &
[1] 6238
$ echo "$!"
6238
63
Chris Down

Bashのmanページから:

   !   Expands to the process ID of the most recently executed 
       background (asynchronous) command.

そう $!には、バックグラウンドで実行された最後のジョブのプロセスID(PID)が含まれます。

$ sleep 100 &
[1] 18813

$ echo "$!"
18813

参考文献

24
slm