1

pipe.sh

 export START=100
 . ./other.sh &
 wait

other.sh

sleep 5
export END=200

しかし、変数ENDがに表示されませんexport -pフォアグラウンドでother.shをソースすると、それでも機能します。

 export START=100
 . ./other.sh 

バックグラウンドプロセスから変数をエクスポートするにはどうすればよいですか?回避策はありますか?

4

1 に答える 1

2

子プロセスは親環境を変更できません。何らかの方法で親から変数を宣言する必要があります。たとえば、ファイルを使用します。

pipe.sh:

export START=100
. ./other.sh > tmp &
wait
source tmp
rm tmp 
echo $END

other.sh:

sleep 5
echo "export END=200"

この回答も参照してください

于 2012-09-07T19:20:44.803 に答える