bash使用带有jq的变量添加属性

MHo*_*gge 3 bash quoting variable jq

要将属性添加到我设法使用的 JSON 文本

result=$(jq -c '.docs[0] + { "value": "someValue" }'<<<"$fileContent")
Run Code Online (Sandbox Code Playgroud)

但是如果我想用一个变量替换“someValue”:

result=$(jq -c '.docs[0] + { "value": ($value) }'<<<"$fileContent")
Run Code Online (Sandbox Code Playgroud)

这给了我

jq: error: value/0 is not defined at <top-level>, line 1:
.docs[0] + { "value": ($value) }
jq: 1 compile error
Run Code Online (Sandbox Code Playgroud)

我也试过没有大括号$value和括号内[$value]没有成功。

Kus*_*nda 12

您的jq表达式在单引号内。这将停止$value被外壳扩展。

相反,使用jqwith--argjq变量提供shell 变量的 JSON 编码值:

result=$(jq --arg value "$value" -c '.docs[0] + { "value": $value }' <<<"$fileContent")
Run Code Online (Sandbox Code Playgroud)