2013-10-26 29 views
0

我有一個主外殼文件A.sh,它通過執行它調用B.sh。我想知道如何從B.shA.sh返回一個變量?如何在shell及其子shell進程之間進行通信? (通過執行不呼叫)

例如

#B.sh 
a=123 

#A.sh 
./B.sh 

echo $a 

我期待在終端上的結果123。我知道上述不起作用,請告訴我如何實現我想要的。謝謝。

+0

它應該工作... –

+0

它並不是因爲我通過執行呼叫而不是採購。如果我使用。 ./ B.sh然後它會工作。但我有限地使用執行。 –

+1

那麼爲什麼你「有限地使用執行」? – villintehaspam

回答

1

B.sh不能影響A.sh的環境。有兩種選擇。

  1. 已將B.sh寫入標準輸出,然後捕獲其輸出。

    a=$(./B.sh) 
    

    $(...)是POSIX標準的一部分,但如果由於某種原因,你正在使用一個shell不支持這種語法,老形式

    a=`./B.sh` 
    

    可能工作。

  2. 已將B.sh寫入文件,並在B.sh退出後從文件中讀取A.sh

相關問題