2014-03-04 134 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