要将属性添加到 JSON 文本,我设法使用
result=$(jq -c '.docs[0] + { "value": "someValue" }'<<<"$fileContent")
但是如果我想用变量替换“someValue”:
result=$(jq -c '.docs[0] + { "value": ($value) }'<<<"$fileContent")
这给了我
jq: error: value/0 is not defined at <top-level>, line 1:
.docs[0] + { "value": ($value) }
jq: 1 compile error
我也尝试过不用大括号$value
和内括号,[$value]
但没有成功。
答案1
您的jq
表达式在单引号内。这样$value
shell 就不会对其进行扩展。
相反,使用jq
with--arg
为变量提供jq
shell 变量的 JSON 编码值:
result=$(jq --arg value "$value" -c '.docs[0] + { "value": $value }' <<<"$fileContent")