我创建了一个环境变量,格式为 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 因为环境变量确实存在。有人可以指出我做错了什么吗?谢谢。
您的
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。