From 1520744bc91fc1889d4229dd40cd7df1f863ee56 Mon Sep 17 00:00:00 2001 From: Maple Date: Wed, 8 Jul 2026 15:06:24 +0800 Subject: [PATCH] fix: strip pre-release suffix in version comparison sort -V treats "-beta" suffix as lexicographically greater than plain version, causing 10.0.0-beta to appear newer than 10.0.0. Strip -beta/-alpha/-rc before comparing to fix this. --- lib/core.sh | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/core.sh b/lib/core.sh index c9e84e4..27e977b 100644 --- a/lib/core.sh +++ b/lib/core.sh @@ -269,7 +269,11 @@ pve_tools_version_gt() { local current="$2" [[ -n "$newer" && -n "$current" ]] || return 1 - [[ "$(printf '%s\n' "$newer" "$current" | sort -V | tail -n1)" == "$newer" && "$newer" != "$current" ]] + # Strip pre-release suffixes (-beta, -alpha, -rc) so sort -V compares only + # the numeric version; a pre-release is never newer than its base release. + local newer_clean="${newer%%-*}" + local current_clean="${current%%-*}" + [[ "$(printf '%s\n' "$newer_clean" "$current_clean" | sort -V | tail -n1)" == "$newer_clean" && "$newer_clean" != "$current_clean" ]] } # 写入配置块(带标记) # 用法: apply_block