Как получить вывод команды curl в переменную - PullRequest
0 голосов
/ 29 марта 2020

Я хочу получить выходные данные следующей команды в одну переменную и затем получить e mail id и id в двух переменных.

Код

curl -s -b ${COOKIE_FILE} -c ${COOKIE_FILE} 'https://api.xxxx.xxxx.com/sso/user?email='${USER_EMAIL} |python -m json.tool

Выход

[
    {
        "createdAt": "2017-12-08T11:07:15.000Z",
        "email": "vxxx.sxxx@domain.com",
        "gravatarUrl": "https://gravatar.com/avatar/13656",
        "id": 937,
        "updatedAt": "2017-12-08T11:07:15.000Z",
        "username": "339cba4c-d90c-11e7-bc18-005056ba0d15"
    }
]

еще один, если USER_EMAIL не так, то мы получаем вывод как [], тогда я должен вывести Email ID is not present, и я выйду из кода exit -1

Я python разработчик, делающий сценарии впервые

Ответы [ 2 ]

1 голос
/ 29 марта 2020

Используйте jq для разбора json:

$ cat input
[
    {
        "createdAt": "2017-12-08T11:07:15.000Z",
        "email": "vxxx.sxxx@domain.com",
        "gravatarUrl": "https://gravatar.com/avatar/13656",
        "id": 937,
        "updatedAt": "2017-12-08T11:07:15.000Z",
        "username": "339cba4c-d90c-11e7-bc18-005056ba0d15"
    }
]
$ jq -r '.[] | (.email,.id)' input
vxxx.sxxx@domain.com
937
$ read email id << EOF
> $(jq -r '.[] | (.email,.id)' input | tr \\n ' ')
> EOF
$ echo $email
vxxx.sxxx@domain.com
$ echo $id
937

Чтобы проверить, был ли адрес электронной почты действительным, вы можете сделать что-то вроде:

echo "${email:?}"

или

test -z "$email" && exit 1
1 голос
/ 29 марта 2020
id=$(cat output | grep -w "id" | awk -F ':' {'print $2'} | sed -e 's|[," ]||g'); echo $id

Сделайте то же самое для электронной почты. Или второй способ, как анубхава предложить в комментарии, используя JQ. (Вероятно, вам сначала нужно установить jq, apt-get install jq). А потом:

cat output | jq '.[].email'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...