ZBLOG

#!/bin/bash compare_versions() { version1=$1 version2=$2 sorted_versions=$(echo -e "$version1\n$version2" | sort -t_ -k1,1n -k2,2n -k3,3n -k4,4n) if [ "$sorted_versions" == "$version1$version2" ]; then echo "Version ...

你的比较版本函数中,使用了字典序排序的方式来对版本号进行比较。这种方法在处理带有下划线分隔符的版本号时可能会导致错误结果。例如,在你的示例中,”2_2_1_1”与”24_08”被按照字典序进行排序,结果为”24_08 2_2_1_1”。

正确比较版本号的一种方法是将每个版本号分割成数字,并逐个进行比较。可以尝试以下修改:

compare_versions() {
    version1=$1
    version2=$2

    IFS='_' read -ra v1 <<< "$version1"
    IFS='_' read -ra v2 <<< "$version2"

    for i in "${!v1[@]}"; do
        if [[ ${v1[i]} -lt ${v2[i]} ]]; then
            echo "Version $version1 is older than $version2"
            return
        elif [[ ${v1[i]} -gt ${v2[i]} ]]; then
            echo "Version $version1 is newer than $version2"
            return
        fi
    done

    echo "Version $version1 is equal to $version2"
}

这个修改会将每个版本号拆分成一个数组,并逐个比较数组中的元素。请注意,此代码假定两个版本号具有相同数量的子版本(用下划线分隔)。如果不是这种情况,请根据实际情况进行调整。

希望能解决你的问题!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:http://sdn.0voice.com/?id=4885

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?