2017-03-19 25 views
0

我正在尝试为使用2个文件的shell会话创建一个常量的关联数组,一个主数组,第二个文件具有特定于Ubuntu或OSX环境的值。Bash .sh文件变量作用域

为了测试这些目前包含:

main.sh

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

os.sh

ddops[os]='osx'; 

目的通过URL是设置这样运行的脚本使用

bash <(curl -s https://somegiturlwhichshowstobeaccessibleandexecute); 

包含

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

但是从终端的空输出测试给出

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

我觉得这可能是一个范围的问题时,我怎么可以声明这个数组去成外壳,并成为可访问?

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

+0

'curl'的输出是什么? 'mainenv.sh'和'osenv.sh'在哪里居住? – chepner

+0

为了清晰起见编辑,输出创建来自url的文件,并在创建时显示为成功。 mainenv和osenv的chmod为777,并且执行来自它们所在的目录。 – Datadimension

回答

0

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

然后如上所述测试成功。