大家都在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
答案 0 :(得分:1)
(未经测试)您可以为每个孩子创建一个子shell,这样他们就不会共享相同的 parent 环境:
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
答案 1 :(得分:0)
只需为一个命令设置变量:
UnitIP=xyz subprocess &