【发布时间】:2018-09-04 21:35:14
【问题描述】:
如何将 变量 参数传递给将用作过滤器的 JQ 程序。由于默认情况下 --arg 将参数作为用引号括起来的字符串传递,因此不能用于应用过滤器。
这里是一个 JQ 程序,它在给定的 json 中找到一个特定的路径并向该路径添加一个静态键值,但由于引号问题而无法工作。
--argjson name '{ "pattern": "XYZ"}' 'def p: "." + (paths | select(.[-1] == "p-enum") | .[0:-1] | join(".")) ; .|p += $name' sample.json
这里是示例 json
{
"type": "object",
"description": "Contains information.",
"properties": {
"type": {
"description": "Type.",
"type": "string",
"p-enum": [
{
"value": "IND",
"description": "Ind."
},
{
"value": "PROP",
"description": "Prop."
}
]
}
}
}
【问题讨论】:
-
您通常不会/不应该将“程序”作为参数传递给您的程序。在这种情况下,过滤器就是程序。出于同样的原因,为什么不应该使用 eval() 和等价物,而且很简单,这里不支持它。想一个不同的方法来制定你的过滤器。如果这不是一个选项,只需将变量过滤器作为过滤器本身运行...
标签: jq