将变量导入jq

耶尔

我们需要在以下命令中使用变量$domain_name而不是hyb.com字符串jq

jq --argjson IDS '['"$(seq -s, -f'"car%02.0f_hyb.com"' 11)"']' '
  .mazda |= $IDS
' file.json

当我们只是将变量设置为

export domain_name=_hyb.com

jq --argjson IDS '['"$(seq -s, -f'"car%02.0f$domain_name "' 11)"']' '
  .mazda |= $IDS
' file.json

然后,导出的变量domain_name将不会被by看到jq是否有关于如何将变量导入的建议jq

库萨兰达

您使用$domain_name单引号。这就是外壳程序不扩展变量的原因。

但是,在这种情况下,我建议采取一种稍有不同的方式:

jq 提供了从Shell导入原始数据的安全方法:

jq '.mazda |= $ARGS.positional' file.json --args car{00..11}"$domain_name"

这将在命令行中插入mazda具有从列表中获取的值--args--args值和列表应该是最后的命令行上。这些值将根据jq需要进行JSON编码通常,这比尝试从可能来自外部来源的数据中自己创建正确的JSON更好(例如,如果要插入的数据包含制表符或换行符或双引号,则jq可以使用正确将其编码为JSON字符串--args)。

该列表是使用大括号扩展名生成的。假设您使用的是bash版本4或更高版本,则由生成的数字{00..11}将正确填充为零。

请注意,domain_name不必是环境(导出)变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章