jsonの配列をシェルスクリプトとjqでループさせて取得する
[ { "ip" : "192.168.10.105", "name" : "玄関" }, { "ip" : "192.168.10.102", "name" : "居間" }, { "ip" : "192.168.10.101", "name" : "トイレ" }, { "ip" : "192.168.10.100", "name" : "寝室" } ]
こんな感じのJSONの配列をループして処理する
cat hoge.json |jq -c .[] |while read JSON; do IP=$(echo $JSON |jq -r .ip) NAME=$(echo $JSON |jq -r .name) echo $IP は $NAME です done
$ ./hoge.sh 192.168.10.105 は 玄関 です 192.168.10.102 は 居間 です 192.168.10.101 は トイレ です 192.168.10.100 は 寝室 です
jq -c .[] で配列をバラして一行ずつ出力できる
$ jq -c .[] < hoge.json
{"ip":"192.168.10.105","name":"玄関"}
{"ip":"192.168.10.102","name":"居間"}
{"ip":"192.168.10.101","name":"トイレ"}
{"ip":"192.168.10.100","name":"寝室"}-c を付けないとこうなるやつ
$ jq .[] < hoge.json
{
"ip": "192.168.10.105",
"name": "玄関"
}
{
"ip": "192.168.10.102",
"name": "居間"
}
{
"ip": "192.168.10.101",
"name": "トイレ"
}
{
"ip": "192.168.10.100",
"name": "寝室"
}
1行ずつ while read で回して $JSONに取り込み、あとは適当に さらに jqで 各変数を取り出して終わり