我的任務是使用 curl https://apache.osuosl.org/maven/maven-3/在 bash 腳本中獲取最新版本的 maven 輸出應該是:3.8.5
uj5u.com熱心網友回復:
一種方法是
- 利用grep只獲取包含
folder鏈接的行 - 利用sed使用正則運算式僅獲取版本號
- 用于
sort對行進行排序 - 用于
tail -n1獲取最后一行
curl -s https://apache.osuosl.org/maven/maven-3/ \
| grep folder \
| gsed -E 's/.*([[:digit:]]\.[[:digit:]]\.[[:digit:]]).*/\1/' \
| sort \
| tail -n1
輸出:
3.8.5
uj5u.com熱心網友回復:
使用sed和tac
-s在 curl 命令中使輸出靜音tac檔案倒序/^<img src/{s/\([^>]*>\)\{2\}\([^/]*\).*/\2/p;:a;n;ba}<img src以然后提取第一個匹配項開頭的匹配行
$ curl -s https://apache.osuosl.org/maven/maven-3/ | tac | sed -n '/^<img src/{s/\([^>]*>\)\{2\}\([^/]*\).*/\2/p;:a;n;ba}'
3.8.5
uj5u.com熱心網友回復:
你提到的 url 是一個 HTML 檔案,curl不是一個 HTML 決議器,所以我會研究一個 HTML 決議器,比如西德爾, 如果我是你:
$ 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
uj5u.com熱心網友回復:
我建議使用中央存盤庫而不是 apache maven 站點之一,因為中央資訊庫更適合機器使用。
將考慮該檔案maven-metadata.xml包含適當的資訊。
<version>..</version>標簽和<latest>..</latest>標簽有兩個選項。
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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/482271.html
