如何将 curl 命令输出到变量中
How to get curl command output into variable
我想获取以下命令的输出一个变量,然后想在两个变量中获取 email 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 开发人员,第一次编写脚本
id=$(cat output | grep -w "id" | awk -F ':' {'print '} | sed -e 's|[," ]||g'); echo $id
对电子邮件执行相同的操作。
或者像 anubhava 在评论中建议的第二种方式,使用 jq。 (可能您需要先安装 jq,apt-get install jq)。然后:
cat output | jq '.[].email'
使用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
我想获取以下命令的输出一个变量,然后想在两个变量中获取 email 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 开发人员,第一次编写脚本
id=$(cat output | grep -w "id" | awk -F ':' {'print '} | sed -e 's|[," ]||g'); echo $id
对电子邮件执行相同的操作。 或者像 anubhava 在评论中建议的第二种方式,使用 jq。 (可能您需要先安装 jq,apt-get install jq)。然后:
cat output | jq '.[].email'
使用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