比较两个版本号(如果次要版本不同则为真)

Compare two version numbers (true if different minor version)

我必须比较 bash 中的两个版本号(例如 5.6.25.7.0)。但是函数只需要 return 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 编辑函数,但无法正确 运行。

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

#!/bin/bash

old_version=""
new_version=""

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"
}'

该脚本只会比较主要和次要版本号,return false 如果它们匹配,否则 return true.