All,
I have 2 version strings, e.g. "2.0.13" and "2.0.2". I need to compare the 2 versions and determine which is the higher version.
How does one do that using bash?
You can use sort -V (version sort):
echo -e "2.0.13\n2.0.2" | sort -V
results in:
2.0.2
2.0.13
-V option.From bmk
You can use sort -V (version sort)
That's the best answer if it works, but unfortunately not all sort commands have the -V option.
If yours doesn't, you'll have to switch to Perl. Newer versions of Perl allow for certain variables to be declared as versions by prefixing them with a lowercase "v". You can then compare them with the gt operator.
See Perldoc perldata for more detail.
If you don't have -V, I'm sure there should be a way to do this by combining:
-t . to make sort split fields on full stops-n to make sort sort numerically-k to define the fields to sort onBut i can't make it work!