之前我们更新客户端的方法是,一个脚本,把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写的游戏客户端更新脚本相关推荐

  1. linux 脚本 写更新,用Shell写的游戏客户端更新脚本

    #!/bin/sh ########################################## # 客户端版本更新系统 ################################### ...

  2. shell linux中用shell写一个占用CPU的脚本

    使用场景: 向公司申请的虚机资源自己工作用的比较方便,因占用较小basis要求回收掉,现写一个脚本,让CPU跑满一些. 首先看下共有几颗逻辑CPU cat /proc/cpuinfo |grep &q ...

  3. 【游戏客户端与服务器面试题】-- 2022年最新游戏客户端与服务器面试(lua篇持续更新)

    [游戏客户端与服务器面试题干货]-- 2022年度最新游戏客户端面试干货(lua篇) 文章目录 一.Lua的8种数据类型 (1) nil 类型 (2) boolean类型 (3) number类型 1 ...

  4. Linux安装Flash脚本,Linux(CentOS)下的Shockwave Flash shell一键更新脚本

    原创内容,转载请注明出处: https://www.myzhenai.com.cn/post/2318.html https://www.myzhenai.com/thread-17933-1-1.h ...

  5. shell写的检测linux系统硬件信息的脚本

    前面用python写了一个检测windonws硬件信息的脚本,这里是很久之前用shell写的一个linux系统硬件信息检测脚本,可以对照看一下.检测内容基本一样:操作系统信息.内存.CPU.硬盘分区及 ...

  6. 用shell写了一个自动编译代码的脚本

    点击打开链接 为了充分利用晚上的时间进行编译,用shell写了一个自动编译代码的脚本,这样保证第二天的调试工作不会受大版本编译的影响,同时也能监测服务器端的代码是否出错.我习惯是在每天下班离开之前运行 ...

  7. linux shell 计算器 除0,用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1....

    用shell写一个简易计算器,可以实现加.减.乘.除运算,假如脚本名字为1.sh,执行示例:./1.sh 1 + 2#!/bin/bash if [ $# -ne 3 ] then echo &quo ...

  8. linux脚本计算器加减乘除,用shell写一个简易计算器,可以实现加、减、乘、除运算,假如脚本名字为1.sh,执行示例:./1....

    用shell写一个简易计算器,可以实现加.减.乘.除运算,假如脚本名字为1.sh,执行示例:./1.sh 1 + 2#!/bin/bash if [ $# -ne 3 ] then echo &quo ...

  9. 用python写跑酷游戏脚本,用Python写一个天天酷跑

    感觉上次写的植物大战僵尸与俄罗斯方块的反应还不错,这次这个文章就更有动力了 这次就写一个天天酷跑吧 写出来的效果图就是这样了 下面就更新一下全部的代码吧 还是老样子先定义`import pygame, ...

最新文章

  1. python获取一个模块的路径_如何获取 Python 模块的路径
  2. git代码回滚的几种方式
  3. kettle mysql 参数_kettle参数、变量详细讲解
  4. java改错题技巧,看这篇文章准没错!
  5. Arch Linux 安装总结
  6. content add tpl.php,phpcms后台批量上传添加图片文章方法详解(一)
  7. Linux笔记-使用crontab定时调用sh文件
  8. Java基础---API概述---常用类(Object类/String类)---equals和==
  9. 如何在 Mac 上修复丢失的鼠标光标?
  10. 源码分析Netty系列
  11. jsmind源码初探
  12. loopback接口介绍
  13. 计科生毕业一年,做了什么?
  14. C# 什么是Asp.net Core?和 .net core有什么区别?
  15. 一、Linux 教程-基础
  16. 业余草告诉你甲骨文正式宣布将 Java EE 移交给 Eclipse 基金会
  17. 历经一个月,终于搞定了SVM(支持向量机)-附源代码解析
  18. 计算机机房电池后备时间规范,IDC机房UPS电池备用时间一般是多长时间?
  19. 三菱电梯最新调试软件,支持LEHY-PRO机型.
  20. IBM江月:销售为什么爱“撒谎”

热门文章

  1. STM32L4单片机配置STOP模式下停止看门狗计数
  2. 旧的华为手机刷Android9,华为老机型内测安卓9.0,这更新速度快到没谁了!
  3. php从入门到放弃,学习总结
  4. Linux中级实战专题篇三:nginx服务(日志介绍,作用域,格式定义,流量控制,访问控制模块,用户信任登录)
  5. java长整型时间转日期_C#长整型时间与java长整型时间转换
  6. 接口多态的综合案例——笔记本电脑
  7. 3dmax2012卸载/安装失败/如何彻底卸载清除干净3dmax2012注册表和文件的方法
  8. 计算机取整函数用法,【Excel】数值取整的n种方法
  9. 小米智能摄像机自动同步到网盘(百度网盘、一刻相册、阿里云盘等)
  10. JAVA输入三个数从小到大排序