1

我正在尝试在 bash 脚本中对 github 使用 OAUTH 身份验证。

这个:

curl -u $USER_NAME --silent -d '{"scopes":["repo"]}' \
    https://api.github.com/authorizations

工作,结果我得到这样的回应:

"created_at": "2012-09-03T13:02:30Z",
"token": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"updated_at": "2012-09-03T13:02:30Z",
"note_url": null,
"note": null,
"url": "https://api.github.com/authorizations/620793",
"app": {
    "url": "http://developer.github.com/v3/oauth/#oauth-authorizations-api",
    "name": "GitHub API"
},
"id": 620793,
"scopes": [
    "repo"
]

但我需要将"token":' 值保存在变量中以备将来使用。我怎么能那样做?

4

2 回答 2

1

你可以使用 sed 和 grep 来得到你想要的:

curl -u $USER_NAME --silent -d '{"scopes":["repo"]}' "https://api.github.com/authorizations" | grep '"token":' | sed 's/.*:\s\+"\([^"]\+\).*/\1/g'

我尝试设置建议工具 jsawk 以在此处发布另一个替代方案,但 jsawk 需要 spidermonkey-bin,现在您无法在 ubuntu 中获取 spidermonkey-bin,并且打包了此文件的 PPA 不再拥有它。现在您需要从源代码编译。太麻烦了,得到一个稍微清洁的解决方案。

于 2012-10-08T17:52:54.683 回答
0

我这样做是为了从不同的 json 响应中获取某些数据:

yourcodehere | grep token | awk '{ print $2 }' | sed s/\"//g | sed s/,//g)

类似于 Onilton 所做的,但只是使用 awk 从该行中获取第二项,使用 sed 去除引号和逗号。我相信(可能不止一个)至少有一个 json 库或用于 bash 的东西来解析它以获得你想要的变量,但我什至没有看过它。我并不是说这比 Onilton 的方法更好,而只是另一种选择。有用。如果我有更好的 awk fu,我可能可以用 awk 完成这一切,并且不需要 sed,但我不需要。

于 2012-12-10T04:00:10.477 回答