易网时代-编程资源站
Welcome
微信登录
编程资源
图片资源库
蚂蚁家优选
PDF转换器
首页
/
操作系统
/
Linux
/
用Shell写的游戏客户端更新脚本
之前我们更新客户端的方法是,一个脚本,把svn的客户端版本检出来。但是每次都重复检出。由于现在客户端已经有800+M,每次检出基本都需要等待5分钟左右。因此应测试要求,写了个脚本,每次只检出更新部分。其实只是利用了svn的update命令。
脚本实现功能:
1、如果首次使用该脚本,在制定目录中创建一个用于保存版本的文件。然后检出项目。2、如果不是首次使用,那么更新步骤1检出的项目。然后修改步骤1的版本号(递增),将版本号写入加载flash的jsp配置中。其中还涉及一些对额外情况的处理,比如如果检出的目标位置已经存在同名文件,那么打包备份这个文件,然后再继续执行正常操作等细微逻辑。刚看Shell不久,也只是利用零散时间看的。写的不好,欢迎提出。
#!/bin/sh
##########################################
# 客户端版本更新系统
##########################################
# CLIENT_INIT_VERSION 客户端新版本,默认是0
# CLIENT_OLD_VERSION 客户端旧版本(存放在VERSION_FILE指定的文件中),当没有时取CLIENT_INIT_VERSION
# CLIENT_NEW_VERSION 客户端新版本,www.linuxidc.com默认是CLIENT_OLD_VERSION+1
# VERSION_FILE 存放上次版本的文件
CLIENT_INIT_VERSION="0"
CLIENT_OLD_VERSION="0"
CLIENT_NEW_VERSION=""
VERSION_FILE="client_version.txt"
# CLIENT_BASE_PATH 放置前端的目录
# VERSION_CONFIG_FILE 服务器前端版本配置文件
# SVN_PATH 前端SVN地址
CLIENT_BASE_PATH="/data/ylzj_test/img/"
VERSION_CONFIG_FILE="/data/ylzj_test/sljweb/version.jsp"
SVN_PATH="http://192.168.14.138:8080/svn/slj_release/ylzj"
CLIENT_NEW_PATH=""
CLIENT_OLD_PATH=""
#更新是否成功
IF_SUCC=""
initVersionFileIfNoExist(){
if [ -f $VERSION_FILE ];then
echo "[INFO] Welcome to use Client Update System."
else
echo "[INFO] Welcome to use Client Update System."
echo $CLIENT_INIT_VERSION > $VERSION_FILE
if [ -f $VERSION_FILE ];then
echo "[SUCC] CREATE VERSION FILE "$VERSION_FILE
else
echo "[FAIL] CREATE VERSION FILE "$VERSION_FILE
fi
fi
}
initClientNewVersion(){
CLIENT_OLD_VERSION=$(cat $VERSION_FILE)
echo "[INFO] The old client version is : "$CLIENT_OLD_VERSION
CLIENT_NEW_VERSION=$(expr $(cat $VERSION_FILE) + 1)
echo "[INFO] The new client version is : "$CLIENT_NEW_VERSION
CLIENT_NEW_PATH=$CLIENT_BASE_PATH$CLIENT_NEW_VERSION
CLIENT_OLD_PATH=$CLIENT_BASE_PATH$CLIENT_OLD_VERSION
}
checkIfFileExistAndDoSomething(){
tmpvar=$1
subpath=${tmpvar%/*}
existFile=${tmpvar##*/}
TMP_BACKUP_FLASH_TAR=""
if [ -f $1 -o -d $1 ];then
echo "[WARN] Flash dir "$1" has exists, it will be tar and backup."
TMP_BACKUP_FLASH_TAR=$existFile".tar"
cd $subpath
echo "[INFO] Archieving "$existFile" to "$TMP_BACKUP_FLASH_TAR
tar -zcvf $TMP_BACKUP_FLASH_TAR $existFile
echo "[INFO] Removing dir "$existFile
rm -rf $existFile
cd -
fi
unset tmpvar
unset subpath
unset existFile
unset TMP_BACKUP_FLASH_TAR
}
prepareClientDir(){
checkIfFileExistAndDoSomething $CLIENT_NEW_PATH
if [ $CLIENT_INIT_VERSION -eq $CLIENT_OLD_VERSION ];then
#第一次使用
#创建目录
echo "[INFO] First create the flash dir "$CLIENT_NEW_PATH
mkdir -p $CLIENT_NEW_PATH
else
#非第一次使用,修改flash名字
echo "[INFO] Copying "$CLIENT_OLD_PATH" to "$CLIENT_NEW_PATH
mv $CLIENT_OLD_PATH $CLIENT_NEW_PATH
fi
if [ -d $CLIENT_NEW_PATH ];then
IF_SUCC="TRUE"
fi
}
storeThisVersionIfSucc(){
if [ -n $IF_SUCC ]; then
echo $CLIENT_NEW_VERSION > $VERSION_FILE
echo "<%String version = "$CLIENT_NEW_VERSION";%>" > $VERSION_CONFIG_FILE
fi
}
createClient(){
echo "[INFO] Checking out flash version..."
svn co $SVN_PATH $CLIENT_NEW_PATH --username=bqli --password=123456
echo "[INFO] Checking out has finished."
}
updateClient(){
echo "[INFO] Updating flash version..."
svn update $CLIENT_NEW_PATH
echo "[INFO] Updating has finished."
}
createOrUpdateClient(){
if [ $CLIENT_INIT_VERSION -eq $CLIENT_OLD_VERSION ];then
createClient
else
updateClient
fi
}
echoStartInfo(){
echo "#################################################"
echo "# 欢迎使用客户端版本更新系统V1.0"
echo "#################################################"
}
echoEndInfo(){
echo "[SUCC] Finished."
}
clear
echoStartInfo
initVersionFileIfNoExist
initClientNewVersion
prepareClientDir
createOrUpdateClient
storeThisVersionIfSucc
echoEndInfo
收藏该网址
版权所有©石家庄振强科技有限公司2024
冀ICP备08103738号-5
网站地图