2011-05-06 180 views
3

全部,Bash脚本和字符串比较

我有2个版本字符串,例如, “2.0.13”和“2.0.2”。我需要比较两个版本并确定哪个版本更高。

如何使用bash做到这一点?

回答

5

可以使用sort -V(版本排序):

echo -e "2.0.13\n2.0.2" | sort -V 

结果:

2.0.2 
2.0.13 
+0

Debian Lenny's'sort'(GNU coreutils)6.10不知道'-V'选项... – 2011-05-06 15:24:47

+0

+1:我打算编写一个内联的Perl脚本,但它非常整洁!我不知道'-V'选项。 – 2011-05-06 15:26:43

-1

如果没有-V做,我相信应该有办法做到这一点通过结合:

  • -t .使排序拆分字段在满座
  • -n,使排序排序数字
  • -k定义字段排序

但我不能使它发挥作用!

+0

是的,我也试图让它以这种方式工作。但没有成功:( – bmk 2011-05-06 17:42:34

1

bmk

您可以使用排序-V(版本排序)

这是最好的答案,如果它的工作原理,但不幸的是并不是所有的sort命令具有-V选项。如果你的没有,你将不得不切换到Perl。较新版本的Perl允许某些变量被声明为版本,前缀为小写“v”。然后您可以将它们与gt运营商进行比较。

有关更多详细信息,请参阅Perldoc perldata