我想从另一个脚本中获取一个变量,如 Stack Overflow 上的这个问题所示:
但是,答案使用source
仅在中可用的命令bash
。我想以便携的方式执行此操作。
我也尝试过
灰
export VAR="foo"
echo "executing a"
什麼是什麼?
#!/bin/sh
./a.sh
echo $VAR
但当然这也行不通。该怎么办呢?
答案1
首先,请注意var
和VAR
是不同的变量。
回答你的问题,该.
命令不是特定于 bash 的:
# a.sh
num=42
# b.sh
. ./a.sh
echo $num
“a”中的变量不需要导出。
http://www.gnu.org/software/bash/manual/bashref.html#Bourne-Shell-Builtins
答案2
环境变量只能从父级继承到子级,而不是反过来。在您的示例中,b.sh 调用 a.sh,因此 a 作为 b 的子级运行。当 a.sh 导出 var 时,b.sh 不会看到它。修改逻辑,以便父母流程导出变量,例如
灰:
echo In a.sh...
VAR="test"
export VAR
./b.sh
b.sh:
echo In b.sh...
echo $VAR