我有一个bash脚本ex.sh,它调用另一个脚本path.sh
sh path.sh
我在path.sh中有一个变量,我想在ex.sh中使用
我试过
export var
然后使用
在ex.sh中调用它echo 'export HOME=${var}' >> /etc/profile.d/user_env.sh
这不起作用,非常感谢任何帮助
答案 0 :(得分:3)
export
识别其子壳的变量或函数
相反,在ex.sh内部, source 如下所示的path.sh脚本 - >
. ./path.sh
或者像这样 - >
source ./path.sh
这样,当前脚本中可以使用path.sh的所有声明变量和函数(在本例中为ex.sh)
如果path.sh除了声明变量和函数之外还做了更多的工作,那么在path.sh和ex.sh中都有一个单独的第三个脚本set_var.sh和source
答案 1 :(得分:2)
父进程无法从子进程变量。您应该在进程之间使用某种形式的通信来交换数据。您可以使用:
newvar=someval
source
并获取newvar
变量或
演示:
档案:parent.sh
commfile="./.ex.$$"
echo "the newvar before child: =$newvar="
bash child.sh "$commfile"
source "$commfile"
echo "the newvar after source: =$newvar="
rm -f "$commfile"
档案:child.sh
commfile="$1"
#do something
sleep 2
echo "newvar='some value'" >"$commfile"
运行parent.sh
打印:
the newvar before child: ==
the newvar after source: =some value=