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

관련 정보