在bash中覆盖hashmap的值

时间:2012-02-05 08:15:35

标签: bash shell hashmap environment-variables

我在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
  4. 最后两次,我的区域值设置为2而不是1。

    即在为test_envoironment设置不同的值时,第二个值始终会覆盖初始值。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:1)

您应该检查bash --version

在bash 4.0 之后支持

Associative array