Shell变量嵌套
最近使用gitlab
做CI/CD
,需要根据当前分支获取不同环境的harbor
镜像仓库,当前分支有dev
、test
、pre
、master
,分支和gitlab变量指向如下:
分支 | gitlab变量 | gitlab 变量值 |
---|---|---|
dev | CI_DEV_REGISTRY | https://dev-harbor.xxx.com |
test | CI_TEST_REGISTRY | https://test-harbor.xxx.com |
pre | CI_PRE_REGISTRY | https://pre-harbor.xxx.com |
master | CI_PROD_REGISTRY | https://prod-harbor.xxx.com |
示例代码:
# 默认变量
BRANCH=master
# 自定义变量
CI_DEV_REGISTRY=https://dev-harbor.xxx.com
CI_PROD_REGISTRY=https://prod-harbor.xxx.com
# 转大写(2中方式都可以)
ENV=`echo ${BRANCH} | tr '[:lower:]' '[:upper:]'`
#ENV=`echo $BRANCH | tr 'a-z' 'A-Z'`
if [ "$BRANCH"x = "master"x ]; then
ENV=PROD
fi
REGISTRY=`eval echo '$'"CI_${ENV}_REGISTRY"`
echo $REGISTRY