命令行下如何向JSON对象添加键值对且避免模板与参数重复?
用jq自动添加--arg传入的键值对到JSON对象
之前的写法需要手动在JSON模板里对应每个--arg参数添加键值对,重复操作冗余。可以利用jq内置的$ARGS.named变量实现模板与传入参数解耦,无需手动添加键值对:
核心命令示例
$ jq -c -n '{u: "u"} + $ARGS.named' --arg a '"1"' --arg b '"2"'
执行后输出:
{"u":"u","a":"\"1\"","b":"\"2\""}
关键说明
-n:指定jq从空输入启动,专注处理定义的模板和参数{u: "u"}:你的基础JSON模板,完全独立于后续传入的参数+ $ARGS.named:将基础JSON对象与--arg传入的所有键值对自动合并,所有通过--arg传递的参数都会被转换成键值对加入最终JSON- 后续可随意添加
--arg key value参数,无需修改基础模板部分
扩展示例(新增参数无需改模板)
$ jq -c -n '{u: "u"} + $ARGS.named' --arg a '"1"' --arg b '"2"' --arg c "3"
输出结果:
{"u":"u","a":"\"1\"","b":"\"2\"","c":"3"}
内容的提问来源于stack exchange,提问作者user11980328
相关产品推荐
相关产品推荐

