使用环境变量获取另一个环境变量的值
Using an Environment Variable to get the Value of Another Environment Variable
使用 Bitbucket 管道,我有像这样的存储库变量(不是部署变量):
DEV_DB_SERVER
QA_DB_SERVER
STG_DB_SERVER
在我的 bitbucket-pipelines.yml
脚本的这个阶段,我无法利用 Deployment 变量 - 因为您只能在一个步骤中公开它们,我正在尝试替换 Repository vars 的第一部分,例如这个:
echo ${"${ENV}_DB_SERVER"}
这将输出每个环境的实际服务器地址 - 取决于目标环境:$ENV。顺便说一下,上面的语法会产生:bash: DB_SERVER=${"$ENV_DB_SERVER"}: bad substitution
但我尝试了无数种变体都没有成功。
我试图避免使用巨大的 switch
或 if
语句并清楚地拼出每个变量。有人知道这样的事情是否可行以及如何实现吗?
虽然不完全是我想要的,但我 能够通过每个环境变量一行来实现我的目标,这比提及每个(27 ea. ) 离散地用于我们的 4 个环境中的每一个:
- tmp="${ENV}_DB_SERVER" && export DB_SERVER=${!tmp}
可能有更优雅的方法来完成此操作,如果您知道的话,我希望您能提供反馈,但这目前有效。
使用 Bitbucket 管道,我有像这样的存储库变量(不是部署变量):
DEV_DB_SERVER
QA_DB_SERVER
STG_DB_SERVER
在我的 bitbucket-pipelines.yml
脚本的这个阶段,我无法利用 Deployment 变量 - 因为您只能在一个步骤中公开它们,我正在尝试替换 Repository vars 的第一部分,例如这个:
echo ${"${ENV}_DB_SERVER"}
这将输出每个环境的实际服务器地址 - 取决于目标环境:$ENV。顺便说一下,上面的语法会产生:bash: DB_SERVER=${"$ENV_DB_SERVER"}: bad substitution
但我尝试了无数种变体都没有成功。
我试图避免使用巨大的 switch
或 if
语句并清楚地拼出每个变量。有人知道这样的事情是否可行以及如何实现吗?
虽然不完全是我想要的,但我 能够通过每个环境变量一行来实现我的目标,这比提及每个(27 ea. ) 离散地用于我们的 4 个环境中的每一个:
- tmp="${ENV}_DB_SERVER" && export DB_SERVER=${!tmp}
可能有更优雅的方法来完成此操作,如果您知道的话,我希望您能提供反馈,但这目前有效。