Shammer's Philosophy

My private adversaria

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 が得られた。どうやら、バックグラウンドプロセスが終了したタイミングでなく、バックグラウンドプロセスが起動したタイミングで $! は更新されるようだ。