我正在使用以下命令從 docker hub 上的 mysql 獲取所有發布標簽:
wget -q https://registry.hub.docker.com/v1/repositories/mysql/tags -O - | jq -r .[].name
輸出是:
5.7.38
5.7.38-debian
5.7.38-oracle
5.7.4
5.7.4-m14
5.7.5
5.7.5-m15
5.7.6
5.7.6-m16
5.7.7
5.7.7-rc
5.7.8
5.7.8-rc
5.7.9
8
8-debian
8-oracle
8.0
8.0-debian
8.0-oracle
8.0.0
8.0.1
8.0.11
8.0.12
8.0.13
8.0.14
8.0.15
8.0.16
8.0.17
8.0.18
8.0.19
8.0.2
8.0.20
8.0.21
8.0.22
8.0.23
8.0.24
8.0.25
8.0.26
8.0.27
8.0.28
8.0.28-debian
8.0.28-oracle
8.0.29
8.0.29-debian
8.0.29-oracle
8.0.3
8.0.4
8.0.4-rc
debian
oracle
有沒有辦法只獲取最新的穩定版本?例如,我想獲取 8.0.29,因為它是 8x 版本的最新穩定版本。下次 8.0.30 到來時,我會從同一命令獲得輸出嗎?
任何人都可以幫助或指出正確的方向嗎?我嘗試使用 xidel 但找不到解決方案
uj5u.com熱心網友回復:
使用 提取任何數字序列,使用scan("\\d ")
將字串轉換為數字tonumber
,并將其用作sort_by
初始陣列的引數,然后您可以使用 index 從中輸出最后一項-1
。
jq -r 'map(.name) | sort_by(scan("\\d ") | tonumber)[-1]'
8.0.29-oracle
演示
如果對于輸出,您只需要純版本號(8.0.29
而不是8.0.29-oracle
),則在破折號之后(包括破折號)放棄所有內容:
jq -r 'map(.name | .[:index("-")]) | sort_by(scan("\\d ") | tonumber)[-1]'
8.0.29
演示
uj5u.com熱心網友回復:
我嘗試使用 xidel 但找不到解決方案
如果您仍然感興趣,那并不難:
$ xidel -s "https://registry.hub.docker.com/v1/repositories/mysql/tags" -e '
(
for $x in $json()/name[matches(.,"^\d \.\d \.\d $")]
order by $x
return $x
)[last()]
'
8.0.29
[matches(.,"^\d \.\d \.\d $")]
只回傳那些name
只有數字的 s。order by $x
用于排序。(
...)[last()]
回傳序列的最后一項(在本例中為最新版本)。
或者甚至更短,您可以使用max()
:
$ xidel -s "https://registry.hub.docker.com/v1/repositories/mysql/tags" -e '
max($json()/name[matches(.,"^\d \.\d \.\d $")])
'
8.0.29
uj5u.com熱心網友回復:
最新版本有latest
標簽。“穩定”在旁觀者的眼中,不能用給定的資訊計算。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/485022.html
下一篇:將溫度從攝氏轉換為華氏?