Bash
bash使用帶有jq的變數添加屬性
要將屬性添加到我設法使用的 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]
沒有成功。
您的
jq
表達式在單引號內。這$value
不會被外殼擴展。相反,使用
jq
with--arg
為變數提供jq
shell 變數的 JSON 編碼值:result=$(jq --arg value "$value" -c '.docs[0] + { "value": $value }' <<<"$fileContent")