Eu tenho o seguinte:
COMMENT="A random comment"
TEXT_JSON='{"person" : "Jim","comment" : "$COMMENT"}'
echo "$TEXT_JSON" | jq .
Isso imprime
{
"person": "Jim",
"comment": "$COMMENT"
}
que não é o que eu quero. Como posso interpolar a string aqui?
Você não pode interpolar entre aspas simples.
Você pode colocar a string entre aspas duplas e, em seguida, escapar das aspas duplas literais:
Ou, alternativamente, você pode manter as aspas simples para não precisar escapar nada, mas termine as aspas simples antes da variável, use aspas duplas para a variável e aspas simples para a última parte da string:
As variáveis do shell nunca são expandidas em strings entre aspas simples no shell.
Para criar um documento JSON com dados de uma variável de shell, use uma ferramenta com reconhecimento de JSON como
jq
oujo
. Isso garante que os dados sejam codificados adequadamente para inclusão no documento. Expandir uma variável de shell em um documento JSON não é o que você deseja fazer.Usando
jq
:Usando
jo
:Ambos criam o JSON equivalente que pode ser representado como
Observe como as aspas duplas foram tratadas automaticamente.