使用 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
适合我
一种方法是
curl -s https://apache.osuosl.org/maven/maven-3/ \
| grep folder \
| gsed -E 's/.*([[:digit:]]\.[[:digit:]]\.[[:digit:]]).*//' \
| sort \
| tail -n1
输出:
3.8.5
使用 sed
和 tac
-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,如果我是你:
$ 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)
我的任务是使用 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
适合我
一种方法是
curl -s https://apache.osuosl.org/maven/maven-3/ \
| grep folder \
| gsed -E 's/.*([[:digit:]]\.[[:digit:]]\.[[:digit:]]).*//' \
| sort \
| tail -n1
输出:
3.8.5
使用 sed
和 tac
-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,如果我是你:
$ 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)