1

こんにちは、stackoverflow の皆さん 親スクリプトとの変数の競合により、子として実行されている bash スクリプトに問題があります。親から変数を開始してプルするサブプロセスがあります。私が行っていることは、毎秒同時に実行される子プロセスのそれぞれの中で、変数が子の間でクロスオーバーするということです。たとえば、UnitIP UnitPort と Unitname はすべて配列から定義されていますが、次の子が開くと、他の子も unitip unitPort などに加えられた変更を受け取ります...この問題の解決策はありますか? つまり、UnitIP=${IP[0]} の子が UnitIP=${IP[0]} で開かれ、ループが UnitIP=${IP[1]} の周りに戻ってきたとします。2 番目の子は UnitIP=${IP[1] で開きます。 ]} そして最初の子も UnitIP=${IP[1]} に変わります。

for (( c=0; c<=$id-1; c++ ))
do
t8=$t
export t=$t8
export UnitIP=${IP[$c]}
export UnitPort=${Port[$c]}
export UnitName=${Name[$c]}
export UnitActive=${Active[$c]}
subsprogram.sh &
done
4

2 に答える 2

1

(未テスト) 子ごとにサブシェルを作成して、同じ親環境を共有しないようにすることができます。

for (( c=0; c<=$id-1; c++ ))
do
    t8=$t
    (
        export t=$t8
        export UnitIP=${IP[$c]}
        export UnitPort=${Port[$c]}
        export UnitName=${Name[$c]}
        export UnitActive=${Active[$c]}
        subsprogram.sh &
    ) 
done
于 2014-03-06T20:10:06.227 に答える
0

1 つのコマンドの変数を設定するだけです。

UnitIP=xyz subprocess &
于 2014-03-06T20:05:07.213 に答える