github_api获取仓库最新Releases版本号
shell命令获取
以 链接https://github.com/fatedier/frp
为例,对应的 项目是fatedier/frp
,
所有latest版本信息的API 地址为:https://api.github.com/repos/fatedier/frp/releases
最新发布的一个的latest版本信息API 地址为:https://api.github.com/repos/fatedier/frp/releases/latest
【实际使用时注意替换接口URL中对应的用户名和仓库名】
下载地址为:"browser_download_url":
"https://github.com/fatedier/frp/releases/download/v0.65.0/frp_0.65.0_android_arm64.tar.gz"
通过观察和分析得知,想要下载最新的版本 只需要获取最新的版本号即可,然后我们手动拼接,即可获取最新的下载地址:
https://github.com/fatedier/frp/releases/download/v[最新的版本号]/frp_[最新的版本号]_android_arm64.tar.gz
以下是完整的shell命令:
# 使用GitHub API获取最新的发行版信息(里边有最新的版本号标识) |
提取链接信息1:
wget -qO- -t1 -T2 "https://api.github.com/repos/iina/iina/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g' |
wget 参数
wget -qO- -t1 -T2`,在这里,我们使用了 4 个参数,分别是`q,O-,t1,T2 |
-q
: q 就是 quiet 的意思了,没有该参数将会显示从请求到输出全过程的所有内容,这肯定不是我们想要的。-O-
:-O
是指把文档写入文件中,而-O-
是将内容写入标准输出,而不保存为文件。(注:这里是大写英文字母 O (Out),不是数字 0)-t1,-T2
: 前者是设定最大尝试链接次数为 1 次,后者是设定响应超时的秒数为 2 秒,两者可以防止失败后反复获取,导致后续脚本无法执行。
筛选参数
grep "tag_name"
: grep 是 Linux 一个强大的文本搜索工具,在本代码中输出 tag_name 所在行,即输出"tag_name": "v0.0.15.1",
head -n 1
:head -n
用于显示输出的行数,考虑到某些项目可能存在多个不同版本的 tag_name,这里我们只要第一个。awk -F ":" '{print $2}'
: awk 主要用于文本分析,在这里指定:
为分隔符,将该行切分成多列,并输出第二列。于是我们得到了(空格)"v0.0.15.1",
sed 's/\"//g;s/,//g;s/ //g'
: 在这里 sed 用于数据查找替换,如sed 's/要被取代的字串/新的字串/g'
,因此本段命令可分为 3 个,以分号分隔。s/\"//g
即将引号删除(反斜杠是为了防止引号被转义),以此类推,最终留下我们需要的内容:v0.0.15.1
。
提取链接信息2:
# 使用curl下载版本信息 |
自动更新drpyS-node
|