bash脚本:如何比较版本号

时间:2014-05-05 09:36:41

标签: bash rpmbuild

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

rpmbuild --version

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

VERSION=4.11.1

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

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

1 个答案:

答案 0 :(得分:0)

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