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

Bash 比较两个版本号(如果次要版本不同,则为true),bash,version,string-comparison,Bash,Version,String Comparison,我必须比较两个版本号e。Gbash中的5.6.2和5.7.0。但该函数只有在较小版本号较高或较低时才必须返回true 示例: 有人能帮我吗?我试图从中编辑函数,但无法使其正确运行。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,"

我必须比较两个版本号e。Gbash中的5.6.2和5.7.0。但该函数只有在较小版本号较高或较低时才必须返回true

示例: 有人能帮我吗?我试图从中编辑函数,但无法使其正确运行。

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。

请解释逻辑。为什么第二个例子是错误的?因为它只是一个补丁更新。我需要一个真正的,只有当它是一个主要或次要的更新,谢谢你的答案。但是你的脚本不起作用。我总是得到一个语法错误:意外标记u,a附近的语法错误。`脚本中的某些行粘贴不成功,我已经纠正了它。请再试一次。
#!/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"
}'