我一直在尝试使用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"
有什么方法吗?
答案 0 :(得分:3)
您必须使用命令行arg --argjson
或fromjson
过滤器将参数转换为数字。数组只能由整数索引,并使用--arg
将输入保持为字符串。
$ jq --argjson i "$i" '.SecurityGroups[$i]'
$ jq --arg i "$i" '.SecurityGroups[$i|fromjson]'