Bash
在json中的元素下附加值
以下參數包括列表值(機器列表)例如
echo $list_of_machine worker01.sys645.com worker02.sys645.com worker03.sys645.com worker04.sys645.com worker05.sys645.com
我們有這個標準的 json
{ "MNN_server": [ "master02.sys645.com" ], "HTTP_SERVER": [ "master01.sys645.com", ] }
如何在HTTP_SERVER元素下附加值 - $list_of_machine,如下所示
預期成績
{ "MNN_server": [ "master02.sys645.com" ], "HTTP_SERVER": [ "master01.sys645.com", "worker01.sys645.com", "worker02.sys645.com", "worker03.sys645.com", "worker04.sys645.com", "worker05.sys645.com" ] }
請注意,您的“標準 JSON”實際上不是 JSON(在結束之前有一個額外的逗號
]
)HTTP_SERVER
。此外,
sed
僅當源以您需要的方式格式化時才有效,它不適用於任意 JSON(可能沒有換行符)。所以更好的解決方案是使用
jq
,如$ jq --arg list "$list_of_machine" '.HTTP_SERVER|=.+($list|split(" "))' < your_file.json { "MNN_server": [ "master02.sys645.com" ], "HTTP_SERVER": [ "master01.sys645.com", "worker01.sys645.com", "worker02.sys645.com", "worker03.sys645.com", "worker04.sys645.com", "worker05.sys645.com" ] }
當然,格式良好
your_file.json
。