如何在shell和它的子shell进程之间进行通信? (通过执行而不是采购)

时间:2013-10-26 00:24:12

标签: shell

我有一个主shell文件A.sh,它通过执行它来调用B.sh。我想知道如何将变量从B.sh返回到A.sh

例如

#B.sh
a=123

#A.sh
./B.sh

echo $a

我期待终端上的结果123。我知道以上不起作用,请告诉我如何实现我想要的。感谢。

1 个答案:

答案 0 :(得分:1)

B.sh不会影响A.sh的环境。有两种选择。

  1. B.sh写入标准输出,然后捕获其输出。

    a=$( ./B.sh )
    

    $(...)是POSIX标准的一部分,但如果由于某种原因您使用的是不支持此语法的shell,则使用较旧的表单

    a=`./B.sh`
    

    可能有用。

  2. B.sh写入文件,并在A.sh退出后从文件中读取B.sh