1

大家好,stackoverflow 的每个人我都遇到了一个 bash 脚本作为孩子运行的问题,它与我的父脚本存在变量冲突。我有一个子进程,它启动并从父进程中提取变量。我所要做的是,在每个每秒同时运行的子进程中,子进程之间的变量交叉。例如 UnitIP UnitPort 和 Unitname 都是从和数组中定义的,但是当下一个孩子打开时,另一个孩子也收到对 unitip unitPort 所做的更改等......有人有解决这个问题的方法吗?所以假设 UnitIP=${IP[0]} 子用 UnitIP=${IP[0]} 打开,循环回到 UnitIP=${IP[1]} 第二个子用 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

只需为一个命令设置变量:

UnitIP=xyz subprocess &
于 2014-03-06T20:05:07.213 回答