実はシェルスクリプト自体ほとんど書いた経験が無いので、無駄な部分などがあるかもしれません。気になる点などあればツッコんでください。シェルスクリプトの文法、勘が当てはまらなくて厳しい。
わざわざ変数作らなくて良かった気がしますが、お気に召すように改造してください。以下のスクリプトをwait.shとか適当な名前で保存しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/bash if [ -z "$1" ]; then echo "No paramater." exit 1 fi T=$(pgrep -f "$1") while [ "$$" != "$T" ] do sleep 1 T=$(pgrep -f "$1") done |
別のシェルスクリプトの中でプロセスの終了を待ちたいところで、1行程度追加すれば問題なし。hogehogenameに落としたいプロセス名か引数を指定してあげてください。
1 |
./wait.sh hogehogename |
動作を軽く説明すると、pgrepに-fオプションを与えているので、引数部分にも引っ掛かります。このスクリプトに対象のプロセス名を引数で渡している関係上、自身は確実に見つかるので、見つけたIDが自身のプロセスIDのみかどうかで判断しています。
awkとかsedとか分からない自分から見るとpgrepとかpkillとかすごく便利そうなのに、大抵のサンプルではps auxの後ろでゴニョゴニョした後にxargs killしてるのはなんでだろう。