【问题标题】:bash script: how to compare version numbers [duplicate]bash脚本:如何比较版本号[重复]
【发布时间】:2014-06-21 13:33:54
【问题描述】:

我为 rpmbuild 编写了一个包装器,它在 ~/rpmbuild/SOURCES/ 中创建了 source.tgz 文件。但是,当我在较旧的操作系统上使用此脚本时; rpm 内置于/usr/src/...。所以在我的 bash 脚本中,我想获取 rpmbuild 的版本号;比如这样:

rpmbuild --version

给出:RPM version 4.11.1。我会把它变成一个变量;让我们说

VERSION=4.11.1

现在如何在我的脚本中轻松检查这是一个 >=4.6.0 版本?我真的需要开始将其解析为主要、次要和错误修复并比较这三个数字,还是有另一种更好的方法来做到这一点?类似:

if [[ $VERSION >= 4.6.0 ]]
then
    # do stuff...
fi

【问题讨论】:

    标签: bash rpmbuild


    【解决方案1】:

    不幸的是,答案并不像看起来那么简单。除了常规的MAJOR.MINOR.PATCHLEVEL 形式之外,任何 rpm 还具有release,有时epoch 优先于版本。此外,据我所知,不同的基于 rpm 的 Linux 供应商已经(或过去)对"corner cases" 的处理略有不同。所以技术上正确的答案应该提到像rpmvercmp 这样的专用工具(这是许多 rpmvercmp 实现之一:))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 2023-03-20
      • 2016-07-23
      相关资源
      最近更新 更多