如何检查CircleCI中是否存在环境变量?

问题描述 投票:0回答:1

我创建了一个环境变量,格式为 STAGE_${CIRCLE_USERNAME}。所以对于我的情况,环境变量是 STAGE_bernard。我正在尝试检查环境变量是否存在,但我的逻辑似乎不起作用。

这是 config.yml :

jobs:
  build:
    parameters:
      stage:
        type: string
        default: ""
    executor: aws-cli/default
    steps:
      - aws-cli/setup
      - checkout
      - run: 
          command: |
            if [[ -z "STAGE_${CIRCLE_USERNAME}" ]]; then
               echo "Hi"
            else
              echo "Bie"
            fi
            echo $stage

但是当我运行它时,输出是 Bie。但它应该是 Hi 因为环境变量确实存在。有人可以指出我做错了什么吗?谢谢。

circleci
1个回答
0
投票

您的

if
条件无效。如果字符串的长度为零,
-z
条件表达式返回 true。
"STAGE_${CIRCLE_USERNAME}"
是一个文字字符串,其长度始终至少为 6 个字符(“STAGE_”),因此表达式始终为假。

您可以使用间接变量引用使其工作:

- run:
    command: |
      stage="STAGE_${CIRCLE_USERNAME}"
      if [[ -n ${!stage} ]]; then
         echo "Hi"
      else
        echo "Bie"
      fi

注意使用

-n
而不是
-z
。与
-z
相反,如果字符串的长度不为零,即 env var 已设置,则
-n
条件表达式返回 true。

© www.soinside.com 2019 - 2024. All rights reserved.