比较两个版本号(如果次要版本不同则为真)
Compare two version numbers (true if different minor version)
我必须比较 bash 中的两个版本号(例如 5.6.2
和 5.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
.
我必须比较 bash 中的两个版本号(例如 5.6.2
和 5.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
.