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

Bash捕获命令输出丢失JSON反斜杠,如何保留以维持JSON有效性?

问题:Bash捕获ADO JSON数据时转义符丢失导致JSON无效

我执行以下命令捕获Azure DevOps的JSON数据:

iteration="$(az boards iteration team list --team Test --project Test --timeframe current)"

该命令的原始标准输出包含如下JSON键值对:

"path": "Test\\Sprint1"

但将输出捕获到iteration变量后,执行echo "$iteration",该键值对变成了:

"path": "Test\Sprint1"

此时用jq处理会失败,因为这已经不是有效的JSON了。请问在Bash中如何让JSON全程保持有效?

解决方案

方法1:直接通过管道传递给jq(推荐)

跳过中间变量,让az命令的输出直接通过管道传给jq,完全保留原始JSON结构:

az boards iteration team list --team Test --project Test --timeframe current | jq '.'

方法2:用printf代替echo输出变量

echo会自动解析转义字符,导致双反斜杠被转成单反斜杠。改用printf可以原样输出变量内容,再传给jq处理:

iteration="$(az boards iteration team list --team Test --project Test --timeframe current)"
printf "%s\n" "$iteration" | jq '.'

方法3:用read命令捕获输出

通过read命令的特殊选项捕获输出,避免子shell中的转义解析问题:

IFS= read -r -d '' iteration < <(az boards iteration team list --team Test --project Test --timeframe current && printf '\0')
printf "%s\n" "$iteration" | jq '.'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 10:05:16