【发布时间】:2020-05-16 02:53:33
【问题描述】:
我想在 bash 中使用 jq 创建有效的 json。 每次 bash 脚本执行“将新元素添加到现有 JSON 数组”时,如果文件为空,则创建新文件。
我正在使用以下 jq 命令来创建我的 json(不完整,请帮我完成)
$jq -n -s '{service: $ARGS.named}' \
--arg transcationId $TRANSACTION_ID_METRIC '{"transcationId":"\($transcationId)"}' \
--arg name $REALPBPODDEFNAME '{"name ":"\($name )"}'\
--arg lintruntime $Cloudlintruntime '{"lintruntime":"\($lintruntime)"}' \
--arg status $EXITCODE '{"status":"\($status)"}' \
--arg buildtime $totaltime '{"buildtime":"\($buildtime)"}' >> Test.json
产生像
这样的输出
{
"service": {
"transcationId": "12345",
"name": "sdsjkdjsk",
"lintruntime": "09",
"status": "0",
"buildtime": "9876"
}
}
{
"service": {
"transcationId": "123457",
"servicename": "sdsjkdjsk",
"lintruntime": "09",
"status": "0",
"buildtime": "9877"
}
}
但我不想以这种格式输出
json 应该像第一次创建一样
在jason下面创建的jq命令应该是什么
{
"ServiceData":{
"date":"30/1/2020",
"ServiceInfo":[
{
"transcationId":"20200129T130718Z",
"name":"MyService",
"lintruntime":"178",
"status":"0",
"buildtime":"3298"
}
]
}
}
当我下次执行 bash 脚本元素时,应该像
一样将元素添加到数组中什么是jq命令获取这种格式的json
{
"ServiceData":{
"date":"30/1/2020",
"ServiceInfo":[
{
"transcationId":"20200129T130718Z",
"name":"MyService",
"lintruntime":"16",
"status":"0",
"buildtime":"3256"
},
{
"transcationId":"20200129T130717Z",
"name":"MyService",
"lintruntime":"16",
"status":"0",
"buildtime":"3256"
}
]
}
}
我也想要“日期”、“服务数据”、“服务信息”
我当前的json中缺少的字段
【问题讨论】:
-
lojza ..我可以实现它一次插入一个元素...但是我的场景应该每次都修改同一个文件的插入..如何实现对同一个文件的修改