2014-03-04 98 views
1

我发布了一个小时前的问题,但没有得到任何答复,我现在尝试了一些不同的方法,我将通过包含更少的代码来简化我的问题,但是如果您想要看看我正在使用的其他代码,请检查我的最后一个问题Parallel Processes in bash bitcoin monitor that records to sql leaking data?。我无法让这些变量成功传输到子shell ./test。感谢您的帮助。阵列的IP端口名称和地址是在for循环之外定义的,我可以放入一个echo命令来验证它们是否通过。如何将变量传递给bash中的子进程

for ((c=0; c<=$id-1; c++)) 
    do 
    UnitIP=${IP[$c]} 
    UnitPort=${Port[$c]} 
    UnitName=${Name[$c]} 
    UnitActive=${Active[$c]} 
    sh -c ". ./test && echo \$UnitIP \$UnitPort \$UnitName \$UnitActive" 
    done 
+0

标题应措词,一个子进程而不是一个子shell。后者不需要出口。 – Scrutinizer

+0

最简单的,自包含的测试用例就是'var = value; sh -c'echo $ var'' –

+0

@ that-other-guy:这是一个恰好是shell而不是subhell的子进程。这是一个子shell:'var = value; (echo“$ var”)' – Scrutinizer

回答

2

你只需将其导出为母贝:

export UnitIP=${IP[$c]} 
export UnitPort=${Port[$c]} 
export UnitName=${Name[$c]} 
export UnitActive=${Active[$c]} 
./test.sh 

所有的变量将在test.sh变得可用(你不需要它源)

+1

我实际上有点惭愧,那工作,谢谢。同样,对于任何查看这个线程的人来说,我的问题的另一大部分是你无法一次运行多个nc,而是运行ncat而不是 – Cfoote7

+0

很高兴它解决了。 – anubhava