Bash变量在可变范围内

时间:2018-01-24 15:27:13

标签: bash

我无法在变量中使用动态变量或变量。

基本上,CI服务器在repo上设置了一堆环境变量。 他们从一个repo进行多次部署,并根据分支名称读取正确的env变量,并在配置文件中回显变量值,以便以后由应用程序代码使用。

应用程序代码只读取一组通用值,无论environemnt如何,例如DB_USERNAME

所以,像这样......

CI服务器ENV变量
DEV_DB_USERNAME
STG_DB_USERNAME
PRD_DB_USERNAME
DEV_LAB_DB_USERNAME
STG_LAB_DB_USERNAME
PRD_LAB_DB_USERNAME

分支名称可以是deploy-dev,deploy-stg,deploy-prd或lab-dev,lab-stg,lab-prd之一。

所以我有一个bash脚本,我设置分支名称和ENV Var用于测试,如下所示:

#!/usr/bin/env bash

export TRAVIS_BRANCH="deploy-dev"
export DEV_DB_USERNAME="goodguy"

IFS="-" read TR_BRANCH DB_ENV TRAVIS_BRANCH <<< "$TRAVIS_BRANCH"
DB_ENV_UC=`echo "$DB_ENV" |tr '[:lower:]' '[:upper:]'`

if [[ ${TR_BRANCH} == "deploy" ]]
then
  DB_USERNAME=\$${DB_ENV_UC}_DB_USERNAME
else
  DB_USERNAME=\$${DB_ENV_UC}_LAB_DB_USERNAME
fi

echo "username is $DEV_DB_USERNAME"
echo "username is $DB_USERNAME"

第一个echo返回字符串:goodguy
第二个echo返回字符串$ DEV_DB_USERNAME

如何获取$ DB_USERNAME返回的goodguy值?

0 个答案:

没有答案