Linux Mint环境下使用jq更新JSON多字段仅单个生效如何解决
问题修复方案
问题根因
- 两次
jq命令都基于初始的report.empty.json做修改,第二次执行时直接覆盖了第一次生成的report.json,所以只有最后一次的project字段修改生效 - 用
--arg传递的参数默认是字符串类型,total需要整数类型,得用--argjson传参才能保证字段类型正确
修复后的脚本
#!/bin/bash readonly PROJECT_KEY=MY_PROJECT readonly PAGE_SIZE=500 # 单次jq操作同时更新两个字段,避免多次写入覆盖问题 jq --argjson totalArg "${PAGE_SIZE}" \ --arg projectKey "${PROJECT_KEY}" \ '.total = $totalArg | .project = $projectKey' \ report.empty.json > report.json echo "Done"
说明
- 单次jq调用中用
|连接多个赋值操作,同时完成两个字段的修改,不需要多次操作文件 --argjson会将传入的参数作为JSON数值类型处理,保证total字段是整数而非字符串- 最终生成的
report.json完全符合预期格式
内容的提问来源于stack exchange,提问作者Alexei
相关产品推荐
相关产品推荐

