如何将整数作为参数放在jq中?

时间:2016-08-03 19:54:46

标签: json jq jsawk

我一直在尝试使用jq来解析从aws cli返回的json文件,但是我仍然坚持使用索引号引用数组的问题。我需要这样做,因为我想以特定格式导出描述安全组的文本文件,包括所有入站和出站规则。

for (( i=1; i<=groupCount; i++ )) ; 
do
    echo $i
    echo $(echo "$input" | jq --arg i $i '.SecurityGroups[$i]')
done

这会返回错误:

1
jq: error (at <stdin>:189): Cannot index array with string "1"

2
jq: error (at <stdin>:189): Cannot index array with string "2"

3
jq: error (at <stdin>:189): Cannot index array with string "3"

有什么方法吗?

1 个答案:

答案 0 :(得分:3)

您必须使用命令行arg --argjsonfromjson过滤器将参数转换为数字。数组只能由整数索引,并使用--arg将输入保持为字符串。

$ jq --argjson i "$i" '.SecurityGroups[$i]'
$ jq --arg i "$i" '.SecurityGroups[$i|fromjson]'