這個問題在這里已經有了答案: 將 bash 變數傳遞給 jq (9 個回答) 3 天前關閉。
我有一個 bash sript pull.sh,其中一個引數是一個人的 github 昵稱。我想計算用這個昵稱發出的所有拉取請求的數量。我在命令列中以這種方式選擇 pr:
curl -s https://api.github.com/repos/owner/repo/pulls?"state=all&per_page=100" | jq '.[] | select(.user.login=="nickname") | .user.login'
這作業得很好。但是我如何計算選擇了多少值?
在 bash 我正在嘗試這個:
amount_of_pr=$(curl -s https://api.github.com/repos/owner/repo/pulls?"state=all&per_page=100" | jq '.[] | select(.user.login=="$1") | .user.login')
echo "$amount_of_pr"
但它不列印任何東西。
另一個問題是 repo 中的拉取請求數量遠大于 100。我需要搜索所有這些請求。我該怎么做?
curl 輸出示例
[
{
"url": "https://api.github.com/repos/datamove/linux-git2/pulls/315",
"id": 771895341,
"node_id": "PR_kwDOEh6nts4uAjAt",
"html_url": "https://github.com/datamove/linux-git2/pull/315",
"diff_url": "https://github.com/datamove/linux-git2/pull/315.diff",
"patch_url": "https://github.com/datamove/linux-git2/pull/315.patch",
"issue_url": "https://api.github.com/repos/datamove/linux-git2/issues/315",
"number": 315,
"state": "open",
"locked": false,
"title": "hw git2 nicknazarov",
"user": {
"login": "nicknazarov",
"id": 16031089,
"node_id": "MDQ6VXNlcjE2MDMxMDg5",
"avatar_url": "https://avatars.githubusercontent.com/u/16031089?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/nicknazarov",
"html_url": "https://github.com/nicknazarov",
"followers_url": "https://api.github.com/users/nicknazarov/followers",
"following_url": "https://api.github.com/users/nicknazarov/following{/other_user}",
"gists_url": "https://api.github.com/users/nicknazarov/gists{/gist_id}",
"starred_url": "https://api.github.com/users/nicknazarov/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/nicknazarov/subscriptions",
"organizations_url": "https://api.github.com/users/nicknazarov/orgs",
"repos_url": "https://api.github.com/users/nicknazarov/repos",
"events_url": "https://api.github.com/users/nicknazarov/events{/privacy}",
"received_events_url": "https://api.github.com/users/nicknazarov/received_events",
"type": "User",
"site_admin": false
}
]
uj5u.com熱心網友回復:
您可以使用jq --arg ...選項傳遞值并構建一個有效的jq請求,如下所示:
curl -s \
-H "Accept: application/vnd.github.v3 json" \
--url "https://api.github.com/repos/datamove/linux-git2/pulls?state=all&per_page=100" \
| jq \
--arg user_login "$1" \
'.[] | select(.user.login==$user_login) | .user.login' \
| wc -l
更新
完整jq解決方案:
curl \
-s \
-H "Accept: application/vnd.github.v3 json" \
--url "https://api.github.com/repos/datamove/linux-git2/pulls?state=all&per_page=100" \
| jq \
--arg user_login "$1" \
'[select(.[].user.login == $user_login)] | length'
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/359241.html
