2017-03-19 37 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重新加載。

然後如上所述測試成功。