使用 curl 获取最新版本的 Maven

Get latest version of Maven with curl

我的任务是使用 curl https://apache.osuosl.org/maven/maven-3/ 在 bash 脚本中获取最新版本的 maven 输出应为:3.8.5

curl -s "https://apache.osuosl.org/maven/maven-3/" | grep -o "[0-9].[0-9].[0-9]" |尾巴-1
适合我

一种方法是

  • 使用 只获取包含 folder link
  • 的行
  • 与正则表达式一起使用以仅获取版本号
  • 使用sort对行进行排序
  • 使用tail -n1获取最后一行
curl -s https://apache.osuosl.org/maven/maven-3/ \
    | grep folder \
    | gsed -E 's/.*([[:digit:]]\.[[:digit:]]\.[[:digit:]]).*//' \
    | sort \
    | tail -n1

输出:

3.8.5

使用 sedtac

  • -s 在 curl 命令中静音输出
  • tac 文件倒序
  • /^<img src/{s/\([^>]*>\)\{2\}\([^/]*\).*//p;:a;n;ba} 匹配以 <img src 开头的行,然后提取第一个匹配项
$ curl -s https://apache.osuosl.org/maven/maven-3/ | tac | sed -n '/^<img src/{s/\([^>]*>\)\{2\}\([^/]*\).*//p;:a;n;ba}'
3.8.5

你提到的 url 是 HTML-document 而 curl 不是 HTML-parser,所以我会研究 HTML-parser,喜欢,如果我是你:

$ xidel -s "https://apache.osuosl.org/maven/maven-3/" -e '//pre/a[last()]'
3.8.5/

$ xidel -s "https://apache.osuosl.org/maven/maven-3/" -e 'substring-before(//pre/a[last()],"/")'
3.8.5

我建议使用中央存储库而不是 apache maven 站点之一,因为中央存储库的信息更适合机器使用。

将考虑文件 maven-metadata.xml 包含适当的信息。

有两个选项使用 .. 标签和 .. 标签。

MVNVERSION=$(curl https://repo1.maven.org/maven2/org/apache/maven/maven/maven-metadata.xml \
| grep "<version>.*</version>" \
| tr -s " " \
| cut -d ">" -f2 \
| cut -d "<" -f1 \
| sort -V -r \
| head -1)

第二个选项:

MVNVERSION=$(curl https://repo1.maven.org/maven2/org/apache/maven/maven/maven-metadata.xml \
| grep "<latest>.*</latest>" \
| cut -d ">" -f2 \
| cut -d "<" -f1)