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を使用してその行から2番目の項目を取得し、sedを使用して引用符とコンマを削除しました。少なくとも1つのjsonライブラリまたはbash用の何かもあります(おそらく複数)、必要な変数のためにそれを解析すると思いますが、私はそれを見ていません。これがオニルトンの方法よりも優れていると言っているのではなく、単なる別の選択肢です。できます。もし私がawkfuを持っていれば、おそらくこれをすべてawkで行うことができ、sedは必要ありませんが、私はそうしません。

于 2012-12-10T04:00:10.477 に答える