Estou tentando adicionar um valor ao array com jq e manter o restante do conteúdo:
"access":{
"allowed_users":[
"admin",
"test",
],
O acima é o que eu quero anexar. Se eu usá jq '.access.allowed_users + [ "test2" ]'
-lo, adicionará uma nova entrada lá, mas o restante do arquivo será perdido, então não posso recriar o arquivo de configuração novamente.
Supondo que você queira anexar ao JSON que você mostra e que o documento JSON está bem formado,
você pode fazer
Ele usa o
+=
para adicionar ao array atribuindo um novo elemento a ele.Com um novo valor em uma variável shell:
Para adicionar muitas entradas de uma só vez, é mais fácil adicioná-las com
--args
:Observe que
--args
e os argumentos subsequentes para essa opção devem ser a última coisa na linha de comando.Para fazer essas alterações em seu arquivo, use um arquivo temporário:
O
&&
impede que o arquivo original seja substituído sejq
, por algum motivo, falhar.