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
シェルは拡張されません。
代わりに、jq
withを使用してシェル変数のJSONエンコーディング値を--arg
変数に指定してください。jq
result=$(jq --arg value "$value" -c '.docs[0] + { "value": $value }' <<<"$fileContent")