您好,我正在尝试将变量传递给jq,但是我不明白为什么一些--arg
变量可以工作,而另一些不能。
jq --version
jq-1.6
该示例不适用于.Value <=$v
,而是返回所有大于10的.Values,而不是预期的小于或等于10
h=hostname
ip=ipaddress
value=10
jq -r --arg i $ip --arg host $h --arg v $value 'select(.Value <=$v and .ClientRequestHost == $host and .ClientIP == $i)' file.json
如果.Value在select()
中硬编码为10 .Value <=10
,并过滤.Value小于或等于10的输出,则工作
h=hostname
ip=ipaddress
value=10
jq -r --arg i $ip --arg host $h --arg v $value 'select(.Value <=10 and .ClientRequestHost == $host and .ClientIP == $i)' file.json
在这两个示例中,传递给jq select的$h和$i的变量是否起作用,只是$v的变量不起作用?
发布于 2020-08-16 08:27:01
我的答案是--arg传递的变量是字符串,而不是被解释为数字https://stackoverflow.com/a/41773407/272648,所以需要进行转换
jq -r --arg i $ip --arg host $h --arg v $value 'select(.Value <=($v | tonumber) and .ClientRequestHost == $host and .ClientIP == $i)' file.json
https://stackoverflow.com/questions/63431948
复制相似问题