Linux脚本-使用jar自动替换配置文件

背景

最近公司需要在生产服务器上测试字库,需要非常频繁修改配置文件中的字体相关属性,然后实时调试,所以需要频繁的修改配置文件并手动发布出去。之前需要修改配置文件时,我们需要:

  1. 把jar包通过FTP传回本地电脑
  2. 把新配置文件,压缩进jar包替换老配置文件
  3. 再把jar包通过ftp传回服务器

今天偶然发现的jar命令,可以实现替换配置文件,就写了个脚本,专门用来替换配置文件。
经过优化,只需要把待替换的文件通过ftp传入远程服务器,就可以实现一键替换了。

脚本

目前实现了,传入新配置文件绝对路径,和源jar包绝对地址,自动更新替换旧的配置文件的功能。

#! /bin/bash


#新文件完整路径
newfile_addr=$1

#带替换jar包完整路径
orijar=$2

#判断操作类型
echo "更新文件操作"
#获取文件名
filename=`echo "$1" | awk -F '[/]' '{print $NF}'`
#根据文件名找文件
jar -tvf $2 | grep "$filename" > /tmp/$filename
count=`wc /tmp/application-verify.properties | awk -F '[ ]' '{print 1F}'`
if [ $count -eq 1 ];then
	echo "找到一个路径开始处理!"
    #获取文件夹路径
	dir=$(dirname $(head -n 1 /tmp/$filename | awk -F '[ ]' '{print $NF}'))
	echo "待查找文件路径!$dir"
	#进入jar包所在文件夹,构建文件目录
	orijaraddr=`echo $(dirname $2)`
	echo "原jar包路径!$orijaraddr"
	cd $orijaraddr

	if [ -d $dir ]; then
	    echo "$dir已经存在,先删除!"
	    rm -rf $dir
	fi	

	mkdir -p $dir

	cp $newfile_addr $orijaraddr/$dir 
	jar -uvf $2 $dir/$filename
	echo "更新成功!"
else
	echo "路径个数异常,无法处理,$count"
	return
fi

测试命令和结果如下:

ging@ging-PC:~/脚本$ ./autoReplaceForjar.sh 传入新配置文件绝对路径 传入jar包绝对路径
更新文件操作
找到一个路径开始处理!
待查找文件路径!BOOT-INF/classes
原jar包路径!/home/ging/SGSfortest/app/realserver
BOOT-INF/classes已经存在,先删除!
正在添加: BOOT-INF/classes/application-dev.properties(输入 = 5791) (输出 = 1837)(压缩了 68%)
更新成功!
原文地址:https://www.cnblogs.com/ging/p/13467981.html