我有一个在部署期间运行的脚本,它采用先前版本的配置,并在安装之前将现有的params复制到新版本的配置文件中。
手动看起来像这样:
./copyProperties.sh ../previousVer-x.x.x/config.properties
现在我试图自动运行这个并且我试图弄清楚如何让它转到上面的目录上的正确的上一个(最后一个)版本(当时可能有很多目录那里有很多历史版本),并获取配置文件。
我提出了以下略显丑陋的线条,它或多或少地完成了工作,但我觉得它不够坚固......
./copyProperties.sh `ll -d ../previousVer-* | grep ^d | tail -2 | head -1 | awk '{print $9}'`/config.properties
有没有人有更好的解决方案?这会每次都有效吗?
感谢,
答案 0 :(得分:2)
如果我正确理解了这个问题,你想找到最新版本的目录。 sort
为此目的进行了版本排序。例如
$ ls -1
previousVer-1.12.3
previousVer-1.2.3
previousVer-2.2.13
previousVer-2.2.2
这是按字典顺序排序,而-V
理解版本编号
$ ls -1 | sort -Vr
previousVer-2.2.13
previousVer-2.2.2
previousVer-1.12.3
previousVer-1.2.3
从那里你可以选择第一个
$ ls -1 | sort -Vr | head -1
previousVer-2.2.13
更新:对于评论中的样本,这是我得到的预期
$ ls ver* | sort -Vr
version-8.0.2.4
version-8.0.1.745
version-7.1.1.740
version-7.0.31.416
version-7.0.31.103
version-7.0.31.90
version-7.0.31-UPG03.728
version-7.0.31-UPG02.648
version-7.0.31-HF03.764
version-7.0.31-HF02.501
version-7.0.30.345
version-7.0.30.148