yaml 错误:使用运算符时参数过多

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

出现 yaml 错误:运行 AWS CodePipeline 时参数过多

if [ ["ID" == "DEV"] AND [STATUS == "TRUE"] ] || [ "ID" == "Test" ] || [ "ID" == "PROD" ]; then

我试过了

if [ "ID" == "DEV" AND STATUS == "TRUE" ] || [ "ID" == "Test" ] || [ "ID" == "PROD" ]; 

但是不起作用

aws-cloudformation aws-codepipeline
1个回答
0
投票

您遇到的 YAML 错误是由于您的条件中的 shell 语法不正确造成的。这是这个条件的正确写法:

if [ "$ID" = "DEV" ] && [ "$STATUS" = "TRUE" ] || [ "$ID" = "Test" ] || [ "$ID" = "PROD" ]; then

以下是更改的详细信息:

  1. 对每个条件使用单方括号
    [ ]
  2. 在 shell 脚本中使用
    =
    而不是
    ==
    进行字符串比较。
  3. 使用
    &&
    而不是
    AND
    进行逻辑与。
  4. 将变量名称括在引号中以处理它们可能为空的情况。
  5. 将每个条件分隔到其自己的括号对中。

如果您在 YAML 文件(例如 AWS CodeBuild 的 buildspec.yml)中使用此文件,您可能需要正确转义它:

- |
  if [ "$ID" = "DEV" ] && [ "$STATUS" = "TRUE" ] || [ "$ID" = "Test" ] || [ "$ID" = "PROD" ]; then
    echo "Condition met"
  else
    echo "Condition not met"
  fi

管道

|
字符允许您在 YAML 中编写多行脚本。

此外,请确保在评估此条件之前正确设置变量

ID
STATUS
。如果它们是环境变量,您可能需要将它们引用为
$ID
$STATUS

如果您仍然遇到问题,查看更多 YAML 文件以了解使用此条件的上下文可能会有所帮助。

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