带有两个变量的动态变量

时间:2014-04-08 20:34:48

标签: linux bash shell

我有一个bash脚本问题。我试图创建以下代码,但是,它无法正常工作。这让我想知道它是否有可能。我希望这里有人能搞清楚。

MYSQL_DB_MyDatabase_USERS_username_PASSWORD=Password

DATABASE_NAME=MyDatabase
DATABASE_USER=username
DATABASE_PASS_TEMP=MYSQL_DB_${DATABASE_NAME}_USERS_${DATABASE_USER}_PASSWORD

echo $DATABASE_PASS_TEMP

我希望输出为“密码”(原始变量)。我收到错误,我知道我的语法不正确。我用google搜索并发现在变量名中使用一个变量,可以使用echo“$ {!DATABASE_PASS_TEMP}”,但是当使用两个动态变量时这不起作用。提前感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:2)

使用BASH的变量间接

echo "${!DATABASE_PASS_TEMP}"
Password

答案 1 :(得分:0)

使用关联数组可以整理一些东西:

declare -A MYSQL_DB_PASSWORDS=(
    [MyDatabase,username]=Password
)

DATABASE_NAME=MyDatabase
DATABASE_USER=username

DATABASE_PASS_TEMP=${MYSQL_DB_PASSWORDS["$DATABASE_NAME","$DATABASE_USER"]}
echo "$DATABASE_PASS_TEMP"

密码