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--arg为jq变量提供shell 变量的 JSON 编码值:
result=$(jq --arg value "$value" -c '.docs[0] + { "value": $value }' <<<"$fileContent")
Run Code Online (Sandbox Code Playgroud)