如何从另一个脚本导入变量?

Eer*_*nen 9 command-line bash scripts environment-variables

我想从另一个脚本中获取一个变量,如 Stack Overflow 上的这个问题所示:

如何在 bash 脚本中引用变量的文件

但是,答案使用source仅在bash. 我想以便携的方式做到这一点。

我也试过

export VAR="foo"
echo "executing a"
Run Code Online (Sandbox Code Playgroud)

b.sh

#!/bin/sh
./a.sh
echo $VAR
Run Code Online (Sandbox Code Playgroud)

但当然这也行不通。这该怎么做?

gle*_*man 16

首先,请注意varVAR是不同的变量。

要回答您的问题,该.命令不是特定于 bash 的:

# a.sh
num=42
Run Code Online (Sandbox Code Playgroud)
# b.sh
. ./a.sh
echo $num
Run Code Online (Sandbox Code Playgroud)

“a”中的变量不需要导出。

http://www.gnu.org/software/bash/manual/bashref.html#Bourne-Shell-Builtins

  • 点命令(`.` 或 `source`)在你的 *current* shell 中评估脚本。执行脚本首先会产生一个子shell,当子shell退出时,子shell中的任何环境变化都会丢失——子进程不能改变其父进程的环境。 (2认同)