shell脚本如何实现将两个war包进行对比

2024-10-14 03:40:57

1、怎么判断两个文件是不是同一个文件呢?根据文件名肯定是不行的,因为即使文件名相同,也可以是两个完全不同的文件,即使文件名不同,也可能是相同的两个文件。这里就要用到md5这个概念,MD5就类似于我们的指纹,每个文件都有一个md5值,只要你对文件做了一丁点修改,文件的md5值就会发生巨大的改变。如下面图中所示:先创建一个文件test,计算md5值,然后往里面写入一个0,再计算md5值。计算md5值用的是shell的md5sum命令,可以看到,就写入了一个0值,但是他们的md5值发生了巨大的变化。md5值的输出格式是"md5值 - 文件名"

shell脚本如何实现将两个war包进行对比

3、如下面第一张图中所示,我们创建了一个脚本,叫做check.sh,用来检查两个文件是否相同。脚本的内容如第二张图中所示,解释如下:首先我们取得两个文件的路径然后依次计算两个文件的md5值,使用cut命令去掉md5值后面的文件名,只需要前面的md5值。取得md5值以后,在if函数里对md5值进行判断,看两个文件是不是相同的文件,如果是相同的,则输出他们是相同文件的提示如果不是相同的,那么进行下一步操作。

shell脚本如何实现将两个war包进行对比

4、执行后的结果如下面所示,可以看到两个相同文件名的文件md5值并不相同,说明可以进行下一步操作。

shell脚本如何实现将两个war包进行对比

6、于是在脚本判断文件md5值不同后,进行下一步操作就是比较他们的修改时间差异。如下面图中所示:先依次计算两个文件的修改时间然后计算两个文件的时间差值再将文件的差值和0进行比较。按照正常情况,待发布的文件修改时间肯定更大,因此它们的差值肯定是大于0的,如果大于0,即待发布的文件比外面的文件更新,如果小于0,即待发布的文件比正在用的文件旧,就不能发布了。

shell脚本如何实现将两个war包进行对比

8、然后我们就可以在这个判断条件下进行最后一步操作了,将待发布的新文件复制到tomcat的项目目录下,而且是强制覆盖。这样tomcat检测到新文件后,就会加载新项目中的内容。更新网站。

shell脚本如何实现将两个war包进行对比
猜你喜欢