Bash

bash使用帶有jq的變數添加屬性

  • April 4, 2021

要將屬性添加到我設法使用的 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不會被外殼擴展。

相反,使用jqwith--arg為變數提供jqshell 變數的 JSON 編碼值:

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

引用自:https://unix.stackexchange.com/questions/371473