我们需要在以下命令中使用变量$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] 删除。
我来说两句