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")