我必须比较bash中的两个版本号(例如5.6.2
和5.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编辑函数,但无法正常运行。
答案 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
。