我尝试执行这个 bash 命令:
verweb=`sudo wget -q -O- 'https://github.com/Kitware/CMake/releases/latest' | grep -o 'https[^\"]*' | grep tag | grep -o -P '(?<=tag/v).*(?=",)' | uniq` ; echo $verweb
并且输出是正确的:3.23.4
但是当我执行此命令时没有输出:
url=`sudo wget -q -O- 'https://github.com/meetfranz/franz/releases/latest' | grep -o 'meetfranz[^\"]*' | grep amd64.deb | head -1` ; echo $url
这是因为 github 频道有私人资产,你能帮我解决这个问题吗?我知道有一些 API 可以解决这个问题,但我不知道如何使用它:
https://github.com/wyozi/download-gh-release-asset/blob/master/download-asset
https://gist.github.com/maxim/6e15aa45ba010ab030c4#file-gh-dl-release
谢谢
答案1
我认为这与“私人频道”(无论它是什么)无关。我认为只是这个项目每个版本都有许多工件,所以有时它不会将所有版本内联到 HTML 响应中,而是通过另一个请求延迟加载发布工件列表。
如果您尝试获取最新版本,可以使用以下命令:
gh release view -R meetfranz/franz --json name -q .name
5.9.2
或者使用 curl + jq:
curl -sSH "Accept: application/json" \
-L https://github.com/meetfranz/franz/releases/latest \
| jq -r .tag_name \
| tail -c '+2'
5.9.2
或者,如果您想要获取与最新版本相关的 amd64 deb 的下载 URL:
gh release view \
-R meetfranz/franz \
--json assets \
-q '.assets[] | select( .url | contains("amd64.deb") ) | .url'
https://github.com/meetfranz/franz/releases/download/v5.9.2/franz_5.9.2_amd64.deb