用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 客户端新版本,默认是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 ];thenecho '[INFO] Welcome to use Client Update System.'elseecho '[INFO] Welcome to use Client Update System.'echo $CLIENT_INIT_VERSION > $VERSION_FILEif [ -f $VERSION_FILE ];thenecho '[SUCC] CREATE VERSION FILE '$VERSION_FILEelseecho '[FAIL] CREATE VERSION FILE '$VERSION_FILEfifi
}initClientNewVersion(){CLIENT_OLD_VERSION=$(cat $VERSION_FILE)echo "[INFO] The old client version is : "$CLIENT_OLD_VERSIONCLIENT_NEW_VERSION=$(expr $(cat $VERSION_FILE) + 1)echo '[INFO] The new client version is : '$CLIENT_NEW_VERSIONCLIENT_NEW_PATH=$CLIENT_BASE_PATH$CLIENT_NEW_VERSIONCLIENT_OLD_PATH=$CLIENT_BASE_PATH$CLIENT_OLD_VERSION
}checkIfFileExistAndDoSomething(){tmpvar=$1subpath=${tmpvar%/*}existFile=${tmpvar##*/}TMP_BACKUP_FLASH_TAR=''if [ -f $1 -o -d $1 ];thenecho '[WARN] Flash dir '$1' has exists, it will be tar and backup.'TMP_BACKUP_FLASH_TAR=$existFile'.tar'cd $subpathecho '[INFO] Archieving '$existFile' to '$TMP_BACKUP_FLASH_TARtar -zcvf $TMP_BACKUP_FLASH_TAR $existFileecho '[INFO] Removing dir '$existFilerm -rf $existFilecd -fiunset tmpvarunset subpathunset existFileunset TMP_BACKUP_FLASH_TAR
}prepareClientDir(){checkIfFileExistAndDoSomething $CLIENT_NEW_PATHif [ $CLIENT_INIT_VERSION -eq $CLIENT_OLD_VERSION ];then#第一次使用#创建目录echo '[INFO] First create the flash dir '$CLIENT_NEW_PATHmkdir -p $CLIENT_NEW_PATHelse#非第一次使用,修改flash名字echo '[INFO] Copying '$CLIENT_OLD_PATH' to '$CLIENT_NEW_PATHmv $CLIENT_OLD_PATH $CLIENT_NEW_PATHfiif [ -d $CLIENT_NEW_PATH ];thenIF_SUCC='TRUE'fi
}storeThisVersionIfSucc(){if [ -n $IF_SUCC ]; thenecho $CLIENT_NEW_VERSION > $VERSION_FILEecho "<%String version = \"$CLIENT_NEW_VERSION\";%>" > $VERSION_CONFIG_FILEfi
}createClient(){echo '[INFO] Checking out flash version...'svn co $SVN_PATH $CLIENT_NEW_PATH --username=bqli --password=123456echo '[INFO] Checking out has finished.'
}updateClient(){echo '[INFO] Updating flash version...'svn update $CLIENT_NEW_PATHecho '[INFO] Updating has finished.'
}createOrUpdateClient(){if [ $CLIENT_INIT_VERSION -eq $CLIENT_OLD_VERSION ];thencreateClientelseupdateClientfi
}echoStartInfo(){echo '#################################################'echo '# 欢迎使用客户端版本更新系统V1.0'echo '#################################################'
}echoEndInfo(){echo '[SUCC] Finished.'
}clear
echoStartInfo
initVersionFileIfNoExist
initClientNewVersion
prepareClientDir
createOrUpdateClient
storeThisVersionIfSucc
echoEndInfo
用Shell写的游戏客户端更新脚本相关推荐
- linux 脚本 写更新,用Shell写的游戏客户端更新脚本
#!/bin/sh ########################################## # 客户端版本更新系统 ################################### ...
- shell linux中用shell写一个占用CPU的脚本
使用场景: 向公司申请的虚机资源自己工作用的比较方便,因占用较小basis要求回收掉,现写一个脚本,让CPU跑满一些. 首先看下共有几颗逻辑CPU cat /proc/cpuinfo |grep &q ...
- 【游戏客户端与服务器面试题】-- 2022年最新游戏客户端与服务器面试(lua篇持续更新)
[游戏客户端与服务器面试题干货]-- 2022年度最新游戏客户端面试干货(lua篇) 文章目录 一.Lua的8种数据类型 (1) nil 类型 (2) boolean类型 (3) number类型 1 ...
- Linux安装Flash脚本,Linux(CentOS)下的Shockwave Flash shell一键更新脚本
原创内容,转载请注明出处: https://www.myzhenai.com.cn/post/2318.html https://www.myzhenai.com/thread-17933-1-1.h ...
- shell写的检测linux系统硬件信息的脚本
前面用python写了一个检测windonws硬件信息的脚本,这里是很久之前用shell写的一个linux系统硬件信息检测脚本,可以对照看一下.检测内容基本一样:操作系统信息.内存.CPU.硬盘分区及 ...
- 用shell写了一个自动编译代码的脚本
点击打开链接 为了充分利用晚上的时间进行编译,用shell写了一个自动编译代码的脚本,这样保证第二天的调试工作不会受大版本编译的影响,同时也能监测服务器端的代码是否出错.我习惯是在每天下班离开之前运行 ...
- linux shell 计算器 除0,用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1....
用shell写一个简易计算器,可以实现加.减.乘.除运算,假如脚本名字为1.sh,执行示例:./1.sh 1 + 2#!/bin/bash if [ $# -ne 3 ] then echo &quo ...
- linux脚本计算器加减乘除,用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1....
用shell写一个简易计算器,可以实现加.减.乘.除运算,假如脚本名字为1.sh,执行示例:./1.sh 1 + 2#!/bin/bash if [ $# -ne 3 ] then echo &quo ...
- 用python写跑酷游戏脚本,用Python写一个天天酷跑
感觉上次写的植物大战僵尸与俄罗斯方块的反应还不错,这次这个文章就更有动力了 这次就写一个天天酷跑吧 写出来的效果图就是这样了 下面就更新一下全部的代码吧 还是老样子先定义`import pygame, ...
最新文章
- python获取一个模块的路径_如何获取 Python 模块的路径
- git代码回滚的几种方式
- kettle mysql 参数_kettle参数、变量详细讲解
- java改错题技巧,看这篇文章准没错!
- Arch Linux 安装总结
- content add tpl.php,phpcms后台批量上传添加图片文章方法详解(一)
- Linux笔记-使用crontab定时调用sh文件
- Java基础---API概述---常用类(Object类/String类)---equals和==
- 如何在 Mac 上修复丢失的鼠标光标?
- 源码分析Netty系列
- jsmind源码初探
- loopback接口介绍
- 计科生毕业一年,做了什么?
- C# 什么是Asp.net Core?和 .net core有什么区别?
- 一、Linux 教程-基础
- 业余草告诉你甲骨文正式宣布将 Java EE 移交给 Eclipse 基金会
- 历经一个月,终于搞定了SVM(支持向量机)-附源代码解析
- 计算机机房电池后备时间规范,IDC机房UPS电池备用时间一般是多长时间?
- 三菱电梯最新调试软件,支持LEHY-PRO机型.
- IBM江月:销售为什么爱“撒谎”
热门文章
- STM32L4单片机配置STOP模式下停止看门狗计数
- 旧的华为手机刷Android9,华为老机型内测安卓9.0,这更新速度快到没谁了!
- php从入门到放弃,学习总结
- Linux中级实战专题篇三:nginx服务(日志介绍,作用域,格式定义,流量控制,访问控制模块,用户信任登录)
- java长整型时间转日期_C#长整型时间与java长整型时间转换
- 接口多态的综合案例——笔记本电脑
- 3dmax2012卸载/安装失败/如何彻底卸载清除干净3dmax2012注册表和文件的方法
- 计算机取整函数用法,【Excel】数值取整的n种方法
- 小米智能摄像机自动同步到网盘(百度网盘、一刻相册、阿里云盘等)
- JAVA输入三个数从小到大排序