Bash .sh文件变量范围

时间:2017-03-19 12:21:08

标签: bash macos ubuntu

我正在尝试使用2个文件为一个shell会话创建一个关联数组,一个是主数组,第二个文件具有特定于环境的值,例如Ubuntu或OSX。

要测试这些目前包含:

main.sh

declare -A ddops;
ddops[main]='test val';

os.sh

ddops[os]='osx';

目的是通过网址设置,以便使用

运行脚本
bash <(curl -s https://somegiturlwhichshowstobeaccessibleandexecute);

包含

./mainenv.sh;
./osenv.sh;

然而,当从终端测试空输出时

echo ${ddops[main]};
echo ${ddops[os]};

我认为这可能是一个范围问题,如何声明这个数组进入shell并变得可访问?

为了清楚起见,curl正确执行以创建包含上述代码的mainenv.sh和osenv.sh。 这些文件的执行是在保存它们的目录中完成的。

1 个答案:

答案 0 :(得分:0)

在范围问题的假设下,我继续将所有文件编译成单个文件(bashcompile),然后cp将其编译为.bash_profile,并使用source ~/.bash_profile重新加载。

然后上述测试成功。