最终,我想将最新版本设置为环境变量,因此对所选答案进行了补充(这为我提供了正确的排序):
export LATEST_VERSION=$(printf '%s\n' * | sort -rV | head -1)
我有一个包含以下目录名称的目录:
ls -1r .
2.0
1.8
16.1
16.0
15.5
15.0
14.5
14.1
14.0
1.3
1.2
1.1.5
1.1.3
1.1.2
我想对它们进行排序以获取最新的发行版本:
ls -1r . | head -1
16.1
因此,基本顺序应如下所示:
16.1
16.0
15.5
15.0
14.5
14.1
14.0
2.0
1.8
1.3
1.2
1.1.5
1.1.3
1.1.2
任何帮助将不胜感激。越简单越好,但是我可以接受任何解决方案。谢谢!
现代GNU排序提供了一个-V
根据版本号规则进行排序的标志:
$ printf '%s\n' * | sort -rV
16.1
16.0
15.5
15.0
14.5
14.1
14.0
2.0
1.8
1.3
1.2
1.1.5
1.1.3
1.1.2
请注意,上面没有使用ls
。通常,您不应该解析ls(1)的输出。
来自man sort
:
-V,--version-对
文本内的(版本)数字进行自然排序
上面是来自GNU手册页。
FreeBSD的排序也支持-V
。
Apple的排序是从2005年开始支持该-V
选项的GNU排序。可以在这里找到解决方法。(帽子提示:l'L'l,mklement0)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句