Получение значения из параметра json не работает (ошибка компиляции jq: 1) - PullRequest
0 голосов
/ 27 июня 2018

Я использую awscli и пытаюсь получить значение IpAddress из вывода моего запроса.

Я пытался использовать jq , но получаю ошибку компиляции.

Это тот случай:

output="$(aws efs describe-mount-targets --file-system-id fs-089b5e31)"
echo $output
{ "MountTargets": [ { "MountTargetId": "fsmt-bb29e666", "IpAddress": "172.20.33.255", "OwnerId": "668225551666", "SubnetId": "subnet-0b61377039d31e666", "NetworkInterfaceId": "eni-045f6ea1376662bdf", "FileSystemId": "fs-089b5e66", "LifeCycleState": "available" } ] }

И это команда, которую я использую для получения IpAddress:

echo array | jq '.[]MountTarget[]s.IpAddress'

Я получаю следующую ошибку:

parse error: Invalid numeric literal at line 2, column 0
ubuntu@ip-10-10-16-245:~/infra-devops/kops/vector$ echo array | jq '.[]MountTarget[]s.IpAddress'
jq: error: syntax error, unexpected IDENT, expecting $end (Unix shell quoting issues?) at <top-level>, line 1:
.[]MountTarget[]s.IpAddress
jq: 1 compile error

Является ли мой запрос проблемой или, может быть, мне лучше использовать sed?

1 Ответ

0 голосов
/ 27 июня 2018

Ваш синтаксис для доступа к массиву неверен. Чтобы получить IP-адрес, используйте это:

aws efs describe-mount-targets --file-system-id fs-089b5e31 | 
  jq '.MountTargets[0].IpAddress'

MountTargets - это массив, из которого вы хотите первый объект.

Если вам нужны необработанные данные (без двойных кавычек), используйте параметр -r в команде jq.

...