2016-08-03 7 views
3

私はaws cliから返されたjsonファイルを解析するためにjqを使用しようとしていましたが、インデックス番号を使用して配列を参照するという問題が残っています。私は、すべての受信と送信のルールを含む、特定の形式でセキュリティグループを記述するテキストファイルをエクスポートしたいので、これを行う必要があります。jqに整数を引数として入れるにはどうしたらいいですか?

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" 

は、この周りに方法はありますか?

答えて

4

引数を数値に変換するには、コマンドライン引数--argjsonまたはfromjsonフィルタを使用する必要があります。配列はintでインデックス付けされ、--argを使用すると入力を文字列として保持します。

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

「fromjson」ではなく「tonumber」を使用することもできます。 –

関連する問題