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で 各変数を取り出して終わり