2012-02-05 35 views
0

我已經在我的bash腳本中聲明瞭一個hashmap,它的值取決於我的環境變量。在bash中覆蓋hashmap的值

export test_ENVIRONMENT=1 

if [ -z "$test_ENVIRONMENT" ]; then 
    echo "Environment variable test_ENVIRONMENT is not set." 
    exit 1 
fi 

echo $test_ENVIRONMENT; 
hashmap["1"]="1" 
hashmap["2"]="2" 

MySql="select distinct url as urls from t where 
REGION=${hashmap["$test_ENVIRONMENT"]} 
and visitday >= TO_DATE(SYSDATE-5,'DD-MON-YYYY') 
AND visitday <= TO_DATE(SYSDATE, 'DD-MON-YYYY') 
order by urls ;" 

echo $mySql 
exit; 

我與test_environment

  1. export test_environment=1
  2. export test_environment=2
  3. export test_environment=1

的不同值運行該腳本三次,在過去兩年時間,我區值設爲到2而不是1.

即在爲test_envoironment設置不同的值時,第二個值總是覆蓋初始值。我在這裏錯過了什麼嗎?

+0

您的三個'test_env'示例值中的兩個值相同 – Mat 2012-02-05 08:57:50

+0

並且是您的整個腳本?你有沒有在某個地方申報? – Mat 2012-02-05 08:58:48

+0

在此處找到類似問題:http://linuxshellaccount.blogspot.com/2008/05/how-to-fake-associative-arrays-in-bash.html。有沒有乾淨的方法來做到這一點? @Mat:聲明不是強制的(至少在版本-3.2中它不是強制的) – TopCoder 2012-02-05 09:01:48

回答

1

您應該檢查您的bash --version

Associative array在bash後支持4.0