【发布时间】:2017-11-30 19:19:30
【问题描述】:
我可以使用 jq 工具制作一个可动态编辑的 json 结构,将 json 数据在 shell 字符串中来回存储。
例如,我正在尝试在此工作代码中的结构中添加一个字段:
echo '{"a":{"b":1}}' | jq -c '.a |= .+ {c:2}'
{"a":{"b":1,"c":2}}
但是使用这样的 shell 函数:
jq_add () {
eval $1=\"$(eval echo \$$1 | $JQ --argjson q1 "$(printf '\"%s\"' "$2")" --argjson q2 "$(printf '\"%s\"' "$3")" '.[$q1] |= .+ $q2')\"
}
v='{"a":{"b":1}}'
jq_add v "a" "{c:2}"
echo $v
答案是: jq: error (at :1): object ({"b":1}) 和 array (["{c:2}"]) 无法添加
【问题讨论】:
标签: json bash environment-variables sh jq