IFS=, read -r lat long < <(
curl -s ipinfo.io/33.62.137.111 |
jq -r '.loc'
)
printf 'Latitude is: %s\nLongitude is: %s\n' "$lat" "$long"
API-интерфейс ipinfo.io возвращает данные JSON, поэтому давайте проанализируем их с помощью jq
:
Вот JSON, возвращенное запросом из вашего примера:
{
"ip": "33.62.137.111",
"city": "Columbus",
"region": "Ohio",
"country": "US",
"loc": "39.9690,-83.0114",
"postal": "43218",
"timezone": "America/New_York",
"readme": "https://ipinfo.io/missingauth"
}
Мы собираемся JSON запросить запись loc
из основного root объекта .
.
curl -s ipinfo.io/33.62.137.111
: загрузить данные JSON -s
в режиме без вывода сообщений. jq -r '.loc'
: обработка JSON данных, запрос записи loc
основного объекта и -r
выходной необработанной строки. IFS=, read -r lat long < <(
: Устанавливает для I nternal F ield S значение ,
и считывает переменные lat
и long
из потока вывода следующей группы команд.