Você precisa usar []
indexing para usar variáveis (ou qualquer coisa não-literal) como a chave:
jq --arg ssid abc --arg pass 123 '.connections[$ssid] = $pass' < file.json
{
"connections": {
"abc": "123"
}
}
Aqui [$ssid]
indexa em .connections
com o valor de $ssid
como chave. O erro estava em " .$
", que é um erro de sintaxe, em vez de fazer com várias variáveis.
Variáveis não foram substituídas diretamente como strings na forma como podem estar em um shell script, mas são ligações lexicais nomeadas reais que devem ser usadas no contexto da expressão. O índice poderia ser uma expressão mais complexa: .connections[$ssid + "X"] = $pass
colocaria um X no final primeiro e usaria isso como chave.