シェルスクリプトからバックグラウンドプロセスをフォアグラウンドに戻すためのきちんとした方法

シェルスクリプトからバックグラウンドプロセスをフォアグラウンドに戻すためのきちんとした方法

例:weblogicを起動して(続行)デプロイするジョブシェルスクリプトがあります。

最後に、シェルスクリプトが終了しないようにバックグラウンドプロセスをフォアグラウンドに戻します(コード0で終了)。

#!/bin/bash

set -m
startWebLogic.sh &

# create resources in weblogic
# deploy war
# ...

jobs -l
fg %1

ジョブ制御を許可するにはを使用する必要がありましたが、set -mこれが非対話型シェルで使用される最もきれいな方法ではないことも発見しました。

この問題を処理するより良い方法はありますか?

答え1

私が探している問題を理解する限りwait

#!/bin/bash

startWebLogic.sh &

# create resources in weblogic
# deploy war
# ...

wait

「プロセスを前面にインポートしない」ただし、weblogicが返されるのを待ちます。したがって、weblogicが終了するまでシェルスクリプトは終了しません。これがあなたが達成したものですfg %1

からhelp wait

ID(プロセスIDまたはジョブ仕様のいずれか)で識別される各プロセスを待ち、そのプロセスの終了ステータスを報告します。 IDが指定されていない場合は、現在アクティブなすべての子プロセスが待機し、ステータス0が返されます。

関連情報