Azure DevOps基础YAML脚本echo命令语法报错排查求助
Azure DevOps YAML脚本语法错误排查
问题代码
variables: yamlvar : "I'm YAML Variable" group : DevGroup stages: - stage: DevStage jobs: - job: _2019Job steps: - script: | echo $(yamlvar) echo $(inputvar) echo $(VanisJob) displayName: Step1 name: StepName1
报错信息
line 1: unexpected EOF while looking for matching `'' line 4: syntax error: unexpected end of file ##[error]Bash exited with code '2'.
错误原因
变量yamlvar的值为"I'm YAML Variable",当Bash执行echo $(yamlvar)时,会将变量展开为echo I'm YAML Variable。此时Bash会把单引号'视为未闭合的引号标记,导致语法解析失败。
解决方法
可以通过以下任意一种方式修复:
- 转义变量中的单引号
修改变量定义,对单引号进行转义:
yamlvar : "I\'m YAML Variable"
- 用单引号包裹变量值
使用单引号定义变量,YAML中通过两个连续单引号表示转义的单引号:
yamlvar : 'I''m YAML Variable'
- 在echo命令中添加双引号
修改script步骤里的echo语句,用双引号包裹展开后的变量,避免Bash解析单引号:
- script: | echo "$(yamlvar)" echo "$(inputvar)" echo "$(VanisJob)" displayName: Step1 name: StepName1
内容的提问来源于stack exchange,提问作者Vaishnavi Vaishu
相关产品推荐
相关产品推荐

