Bash脚本运行最新版本的文件?

时间:2012-08-16 16:25:52

标签: java regex bash maven

我正在使用Apache Maven将我们的产品发布到Production,截至目前,创建的生成的jar文件没有附加版本号。我想附加当前的pom.xml版本号(我知道该怎么做),但我需要安装程序脚本(基本上是带有额外参数的java -jar命令)来默认访问最新版本的安装程序。 / p>

说我的部署文件名为foo.jar。我的脚本基本上是java -jar foo.jar

相反,我希望我的部署目录包含foo-4.0.0.jarfoo-4.0.1.jarfoo-4.0.2.jar等。

我想创建一个运行最高版本foo的bash脚本。

我看过按创建日期排序,但我可以立即想到可能效果不佳的方案。我已经考虑过修改日期,然后手动touch我要安装的文件,但这个想法也很糟糕。

显然我需要拆分名称(可能带有正则表达式)并隔离版本号(可能是最后一个短划线的子串和名称中的最后一个句点?)并以某种方式对它们进行排序。排序可能是我最关心的问题......并重新关联文件。

如果这太复杂了,理论上我可以创建一个Java文件来执行此操作(我的主要语言是Java吗?),但理想情况下它只是一个bash脚本。

谢谢

1 个答案:

答案 0 :(得分:5)

您可以使用sort,指定分隔符和一组键进行排序,例如

$ ls *.jar | sort -t- -k2 -V -r

将使用版本号( -V )排序对您的罐子进行反向排序( -r ),使用将版本号与罐子名称分开 - t - ,并使用 -k2 (您的版本号)对第二个字段进行排序

在我的测试目录中,我得到:

a-2.2
a-2.1
a-2.0
a-1.50
a-1.10
a-1.3.1
c-1.3.0.1
a-1.3
a-1.2.9
b-1.2.8
a-1.2

看起来不错。

通过head -1管道以上,为您提供最佳条目。