在子对象上写入具有键值的jq文件

时间:2018-10-25 15:08:54

标签: json bash object jq

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

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

我尝试过类似的操作,但我不明白为什么它不正确。

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

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

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

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

产生:

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

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