比较两个版本号(如果有不同的次要版本,则为true)

时间:2018-07-17 05:42:50

标签: bash version string-comparison

我必须比较bash中的两个版本号(例如5.6.25.7.0)。但是,如果该函数的次发行版本号较高或较低,则该函数仅需要返回true

示例:

| Old Version | New Version | return  |
| ----------- | ----------- | ------- |
|   5.6.2     |   5.7.0     |  true   |
|   5.6.2     |   5.6.9     |  false  |
|   5.6.2     |   5.6.9     |  false  |
|   5.6.2     |   5.5.0     |  true   |
|   5.6.2     |   5.8.8     |  true   |
|   5.6.2     |   6.0.0     |  true   |
|   5.6.2     |   4.0.0     |  true   |

有人可以帮我吗?我尝试从BASH comparing version numbers编辑函数,但无法正常运行。

1 个答案:

答案 0 :(得分:1)

awk在这种情况下可能会有所帮助。这是一个简单的脚本,

#!/bin/bash

old_version="$1"
new_version="$2"

awk -v u=${old_version} -v v=${new_version} '
BEGIN{ 
  split(u,a,"."); 
  split(v,b,"."); 
  printf "old:%s new:%s => ",u,v; 
  for(i=1;i<=2;i++) if(b[i]!=a[i]){print "true";exit} 
  print "false"
}'

该脚本只会比较主要和次要版本号,如果匹配则返回false,否则返回true