jq:传递不带引号的字符串参数

2023-12-03

我想传递一个不带引号的参数(JQ arg 默认情况下有双引号),因为它应该用作过滤器。例如

propt='.properties'
final=($(jq -r -c --arg p $propt '$p' sample.json))
echo $final

样本.json

{
  "type": "object",
  "description": "Contains information",
  "properties": {
    "type": {
      "description": "Type"
        }
   }
}

所以最终打印出来.properties而不是预期的{"type":{"description":"Type"}}为此,我使用 bash shell。

请让我知道我做错了什么。


如果我理解正确,那么您会因为认为需要在中设置变量而偏离主题jq,而不是仅仅让 shell 进行扩展:

% foo='.properties'
% jq -r -c  "$foo" sample.json 

output:

{"type":{"description":"Type"}}

请注意 $foo 上的双引号仍然允许 shell 将变量扩展为 .properties。这就是说你可能不安全地使用:jq -r -c $foo sample.json

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jq:传递不带引号的字符串参数 的相关文章

随机推荐