首页 > 解决方案 > 在子对象上写入带有键值的 jq 文件

问题描述

我想用 JQ 从无到有创建一个 Json 文件(Composer)。我的目标是从 jq 命令中传递的 args 设置模块和版本

{
    "require" : {
        "mymodule": "myversion"
   }
}

我尝试过这样的事情,但我不明白为什么它不正确。

jq --arg module "themodule" --arg version "3.0" '{.require.($module):$version}' 

谢谢你的帮助

标签: jsonbashobjectjq

解决方案


首先,您几乎肯定会想要使用-n命令行选项;其次,module是关键字,因此不能用作 $ 变量名称。但:

jq -n --arg m themodule --arg version "3.0" '
  {require: { ($m): $version} }' 

产生:

{
  "require": {
    "themodule": "3.0"
  }
}

这里的技巧是将指定键名的表达式括在括号中。


推荐阅读