Bashの$!
bashには、いろいろな変数があるが、また新しく一つ知ったのでそれを備忘メモ。最後に実行したback ground process の PID が格納される$!。以下、実行例。
$ sleep 5 & [2] 1779 $ [2]- Done sleep 5 $ echo $! 1779 $ sleep 30 & [2] 1796 $ echo $! 1796 $ $ $ [2]- Done sleep 30 $
最初の sleep 5 が終了した直後に echo $! で、その sleep の PID が得られる。そして、その後再度 sleep 30 & を実行して、30 秒経過前に再度 echo $! を実行したところ、sleep 30 の方の PID が得られた。どうやら、バックグラウンドプロセスが終了したタイミングでなく、バックグラウンドプロセスが起動したタイミングで $! は更新されるようだ。