You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps:如何转义包含JSON内容的变量VAR?

解决Bash@3任务写入JSON变量到文件的报错问题

错误原因

任务执行报错是因为VAR包含的JSON内容里有单引号(或其他Bash特殊字符),Azure Pipelines替换$(VAR)后,Bash脚本中的echo语句会出现未闭合的单引号,触发语法错误unexpected EOF while looking for matching '''。

解决方案

推荐使用环境变量传递的方式,避免直接在脚本中展开变量导致的解析问题,具体配置如下:

- task: Bash@3
  displayName: Nemo
  env:
    JSON_CONTENT: $(VAR)  # 将VAR赋值给环境变量JSON_CONTENT
  inputs:
    targetType: 'inline'
    script: |
      # 用printf原样输出环境变量内容到文件,避免echo的转义问题
      printf '%s' "$JSON_CONTENT" >> conf.json

为什么这个方法有效?

  • Azure Pipelines将VAR的值完整传递给环境变量JSON_CONTENT,不会提前解析内容中的特殊字符
  • Bash脚本中用双引号包裹$JSON_CONTENT,会保留变量内容的所有原始字符(包括单引号、双引号、换行符)
  • printf '%s'会原样输出内容,不会处理任何转义序列,确保JSON结构完整

备选方案(不推荐)

如果一定要直接在脚本中使用$(VAR),可以通过sed转义单引号,但这种方法需要处理所有可能的特殊字符,容易遗漏:

- task: Bash@3
  displayName: Nemo
  inputs:
    targetType: 'inline'
    script: |
      echo '$(VAR)' | sed "s/'/'\\\\''/g" >> conf.json

内容的提问来源于stack exchange,提问作者user3579222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:35:03