Bitbucket Pipeline中shell case语句语法错误,求正确写法
Bitbucket Pipeline中case...esac语句的正确写法
以下是能正常运行的YAML配置示例,可解决你遇到的语法错误问题:
pipelines: default: - step: name: Execute Case Logic script: - | # 用双引号包裹变量,避免特殊字符或空值引发语法问题 case "$BITBUCKET_PR_DESTINATION_BRANCH" in "$ST_BRANCH") echo "处理合并到预发布分支的逻辑" # 这里添加你的预发布环境操作命令 ;; "$PR_BRANCH") echo "处理合并到生产分支的逻辑" # 这里添加你的生产环境操作命令 ;; *) echo "目标分支不在预设范围内,执行默认逻辑" # 默认分支的处理命令 ;; esac
关键注意事项(也是你之前出错的常见原因):
- 多行shell脚本的YAML格式:必须用
|定义多行脚本,确保Pipeline生成的shell文件保留正确的换行和结构,否则YAML会把脚本拆成多个独立命令,破坏case语句的完整性。 - 变量引用:所有变量(包括Bitbucket内置变量和自定义工作区变量)都用双引号包裹,防止变量值含空格、特殊字符或为空时触发语法错误。
- case语法规范:
- 每个模式结尾必须紧跟
) - 每个分支的代码块必须用
;;结束 - 最后用
esac闭合整个case语句
- 每个模式结尾必须紧跟
- YAML缩进:统一使用空格(建议2个或4个),绝对不能混用制表符,否则会导致脚本解析异常。
内容的提问来源于stack exchange,提问作者Chris F
相关产品推荐
相关产品推荐

