0

メイン スクリプトからシェル スクリプトを呼び出し、それが完了するのを待ってからメイン スクリプトをさらに処理するつもりです。

私はやってみました

xyz_Sh &
while [[ $cnt -gt 0 ]] ; do
cnt=`ps -ef| grep "xyz_Sh" |grep -v grep |wc -l`
done

また、待機を使用してみました

. xyz_Sh & 
wait_id=$!
wait $wait_id

しかし、この場合、制御はメイン ルーチンに戻りません。スクリプトは xyz_Sh の実行後に停止します。何が欠けているのでしょうか?

ありがとう

アリ

4

1 に答える 1

1

何かがバックグラウンドに入れられない限りxyz_Sh、デフォルトのシェルの動作はまさにあなたが望むことをするはずです。

シェル スクリプトでは、前のコマンドが終了するまでコマンドは実行されないため、次のようになります。

xyz_Sh
//do other stuff

あなたが望むように正確に動作するはずです。

一方、物事をバックグラウンドに置く場合は、終了する前にすべてのプロセスが完了するのを待つように変更する必要がありxyz_Sh ますxyz_Sh。これはコマンドで実行できますwait

于 2012-05-21T17:21:49.587 に答える