【发布时间】:2017-11-08 08:39:44
【问题描述】:
我尝试以这种方式传递一个 shell 变量:
jq -r --arg NEWGROUP "$NEWGROUP" '.[] | select(.name | contains("$NEWGROUP") ) | .id'
但它不起作用。
当我在 contains() 中明确指定组名时,它会起作用。 我是不是做错了什么?
【问题讨论】:
我尝试以这种方式传递一个 shell 变量:
jq -r --arg NEWGROUP "$NEWGROUP" '.[] | select(.name | contains("$NEWGROUP") ) | .id'
但它不起作用。
当我在 contains() 中明确指定组名时,它会起作用。 我是不是做错了什么?
【问题讨论】:
我做错了吗?
是的,在 jq 程序中,您已经引用了您想要成为 jq 变量的内容,从而将其转换为 JSON 字符串。只需删除引号,让 $-string 成为 $-variable。
附言你可能应该避免contains,它有奇怪的语义。根据您的 jq,可以考虑的替代方案包括 index 和 test。
【讨论】: