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

Azure Pipelines中如何设置含引号的管道变量?

Azure Pipelines Bash任务中设置含特殊字符的输出变量问题解决

在基于Ubuntu的微软托管Azure Pipelines Bash脚本任务里,我需要设置可被其他任务调用的管道变量,变量值是类似如下的映射格式:

{ "1.0.0" = "my-function-app-url.com" }

使用以下命令设置变量时总是执行失败,原因是存储在$VALUE中的映射包含双引号,会引发Bash脚本解析错误:

echo "##vso[task.setvariable variable=$KEY;isOutput=true;issecret=true]$VALUE"

我试过用单引号包裹echo的字符串、转义变量内的双引号,甚至尝试移除引号,但要么结果还是失败,要么井号被Bash识别为注释,都没能解决问题。


解决方案

后来排查发现问题根源是字符串包含换行符。处理掉换行之后,只需转义双引号,原有代码就能正常运行:

# 如果值是映射格式...
if [[ "$VALUE" == "{"* && "$VALUE" == *"}" ]]; then
  VALUE=$(echo -n "$VALUE" | tr -d '\n')  # 移除换行符,将值转为单行字符串
  VALUE=$(echo -n "$VALUE" | sed 's/"/\\"/g') # 转义双引号,让字符串成为有效的JSON格式
fi

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:17:09