bash adiciona propriedade usando variável com jq

1

Para adicionar uma propriedade a um texto JSON, consigo usar

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

Mas se eu quiser substituir "someValue" por uma variável:

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

Isso me dá

jq: error: value/0 is not defined at <top-level>, line 1:
.docs[0] + { "value": ($value) }
jq: 1 compile error

Eu também tentei sem chaves $value e dentro de parênteses [$value] sem sucesso.

Eu sou novo no script, obrigado por mais ajuda!

    
por MHogge 16.06.2017 / 10:24

1 resposta

3

Sua expressão jq está entre aspas simples. Isso impede que $value seja expandido pelo shell.

Em vez disso, use aspas duplas:

result=$(jq -c ".docs[0] + { \"value\": \"$value\" }"<<<"$fileContent")
    
por 16.06.2017 / 10:51