You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简单高效比较BASH_VERSION与指定版本 实现Zsh is-at-least功能

Bash 实现 is-at-least 版本比较函数

直接在Bash中定义同名函数即可,纯内置语法实现无外部依赖,支持最多3段版本号(x.y、x.y.z格式),逐位按十进制数值比较,符合版本号比较规则:

is-at-least() {
    # 入参:$1=最低要求版本,$2=待比较版本(可选,默认取当前Bash版本)
    local req_ver cur_ver IFS=.
    req_ver=($1)
    cur_ver=(${2:-$BASH_VERSION})

    # 版本段统一补全为3位,不足补0
    for i in {0..2}; do
        [[ -z ${req_ver[$i]} ]] && req_ver[$i]=0
        [[ -z ${cur_ver[$i]} ]] && cur_ver[$i]=0
    done

    # 逐位比较,10#前缀强制按十进制解析,避免前导0被识别为八进制
    for i in {0..2}; do
        if (( 10#${req_ver[$i]} > 10#${cur_ver[$i]} )); then
            return 1
        elif (( 10#${req_ver[$i]} < 10#${cur_ver[$i]} )); then
            return 0
        fi
    done
    # 所有段位相等,符合版本要求
    return 0
}

使用示例

和Zsh原生is-at-least用法完全一致:

# 判断当前Bash版本是否 >= 5.7
is-at-least 5.7 && echo "You're using a version of Bash above 5.7" || echo "You're running an old Bash version. Upgrade, dude."

# 手动传入待比较版本测试规则
is-at-least 1.3 1.25 && echo "1.25 >= 1.3" || echo "1.25 < 1.3"
# 输出:1.25 >= 1.3,符合要求的版本比较规则

内容的提问来源于stack exchange,提问作者iconoclast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:06:04