bashはjq変数を使用して属性を追加します。

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]成功しませんでした。

ベストアンサー1

式はjq一重引用符内にあります。これにより、$valueシェルは拡張されません。

代わりに、jqwithを使用してシェル変数のJSONエンコーディング値を--arg変数に指定してください。jq

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

おすすめ記事