1

2 つのシェル スクリプトがあります。それらの1つに私は持っています:

export FOO="yes"
sh another.sh &

# ops ...

export FOO=0

私が持ってanother.shいる:

while [[ $FOO -eq "yes" ]]
do
# something ...
done

問題は、最初のスクリプトが を設定して終了したとき、 inFOO=0の値がFOOでありanother.sh続けること"yes"です。FOO最初のスクリプト (呼び出し元) がいつ終了したかを把握できるように、更新を取得する方法を知りたいです。

4

3 に答える 3

1

これは不可能です。親の環境への変更は、子プロセスに渡されません。

親子関係を逆転させることを考えたことはありますか?子が親の終了を待っている場合、子スクリプトから親スクリプトを呼び出してみませんか? 最初のスクリプトの名前が「first.sh」であると仮定すると、次のようになります。

別の.sh:

sh first.sh &
CHILDPID=$!

while ! (ps -p $CHILDPID | grep $CHILDPID)
do
[...]
done

ジョブ制御を使用する ( set -mbash で使用する) ことは、別の解決策になる場合があります。

于 2013-10-08T16:46:45.273 に答える