出现 yaml 错误:运行 AWS CodePipeline 时参数过多
if [ ["ID" == "DEV"] AND [STATUS == "TRUE"] ] || [ "ID" == "Test" ] || [ "ID" == "PROD" ]; then
我试过了
if [ "ID" == "DEV" AND STATUS == "TRUE" ] || [ "ID" == "Test" ] || [ "ID" == "PROD" ];
但是不起作用
您遇到的 YAML 错误是由于您的条件中的 shell 语法不正确造成的。这是这个条件的正确写法:
if [ "$ID" = "DEV" ] && [ "$STATUS" = "TRUE" ] || [ "$ID" = "Test" ] || [ "$ID" = "PROD" ]; then
以下是更改的详细信息:
[ ]
。=
而不是 ==
进行字符串比较。&&
而不是 AND
进行逻辑与。如果您在 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 文件以了解使用此条件的上下文可能会有所帮助。