歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

用Shell寫的游戲客戶端更新腳本

之前我們更新客戶端的方法是,一個腳本,把svn的客戶端版本檢出來。但是每次都重復檢出。

由於現在客戶端已經有800+M,每次檢出基本都需要等待5分鐘左右。因此應測試要求,寫了個腳本,每次只檢出更新部分。其實只是利用了svn的update命令。

腳本實現功能:

1、如果首次使用該腳本,在制定目錄中創建一個用於保存版本的文件。然後檢出項目。

2、如果不是首次使用,那麼更新步驟1檢出的項目。然後修改步驟1的版本號(遞增),將版本號寫入加載flash的jsp配置中。

其中還涉及一些對額外情況的處理,比如如果檢出的目標位置已經存在同名文件,那麼打包備份這個文件,然後再繼續執行正常操作等細微邏輯。

剛看Shell不久,也只是利用零散時間看的。寫的不好,歡迎提出。

  1. #!/bin/sh  
  2.   
  3. ##########################################  
  4. # 客戶端版本更新系統  
  5. ##########################################  
  6.   
  7.   
  8. # CLIENT_INIT_VERSION 客戶端新版本,默認是0  
  9. # CLIENT_OLD_VERSION  客戶端舊版本(存放在VERSION_FILE指定的文件中),當沒有時取CLIENT_INIT_VERSION  
  10. # CLIENT_NEW_VERSION  客戶端新版本,www.linuxidc.com默認是CLIENT_OLD_VERSION+1  
  11. # VERSION_FILE        存放上次版本的文件  
  12. CLIENT_INIT_VERSION='0'  
  13. CLIENT_OLD_VERSION='0'  
  14. CLIENT_NEW_VERSION=''  
  15. VERSION_FILE='client_version.txt'  
  16.   
  17. # CLIENT_BASE_PATH    放置前端的目錄  
  18. # VERSION_CONFIG_FILE 服務器前端版本配置文件  
  19. # SVN_PATH            前端SVN地址  
  20. CLIENT_BASE_PATH='/data/ylzj_test/img/'  
  21. VERSION_CONFIG_FILE='/data/ylzj_test/sljweb/version.jsp'  
  22. SVN_PATH='http://192.168.14.138:8080/svn/slj_release/ylzj'  
  23.   
  24. CLIENT_NEW_PATH=''  
  25. CLIENT_OLD_PATH=''  
  26.   
  27. #更新是否成功  
  28. IF_SUCC=''  
  29.   
  30. initVersionFileIfNoExist(){  
  31.     if [ -f $VERSION_FILE ];then  
  32.         echo '[INFO] Welcome to use Client Update System.'  
  33.     else  
  34.         echo '[INFO] Welcome to use Client Update System.'  
  35.         echo $CLIENT_INIT_VERSION > $VERSION_FILE  
  36.         if [ -f $VERSION_FILE ];then  
  37.             echo '[SUCC] CREATE VERSION FILE '$VERSION_FILE  
  38.         else  
  39.             echo '[FAIL] CREATE VERSION FILE '$VERSION_FILE  
  40.         fi  
  41.     fi  
  42. }  
  43.   
  44. initClientNewVersion(){  
  45.     CLIENT_OLD_VERSION=$(cat $VERSION_FILE)  
  46.     echo "[INFO] The old client version is : "$CLIENT_OLD_VERSION  
  47.     CLIENT_NEW_VERSION=$(expr $(cat $VERSION_FILE) + 1)  
  48.     echo '[INFO] The new client version is : '$CLIENT_NEW_VERSION  
  49.     CLIENT_NEW_PATH=$CLIENT_BASE_PATH$CLIENT_NEW_VERSION  
  50.     CLIENT_OLD_PATH=$CLIENT_BASE_PATH$CLIENT_OLD_VERSION  
  51. }  
  52.   
  53. checkIfFileExistAndDoSomething(){  
  54.         tmpvar=$1  
  55.         subpath=${tmpvar%/*}  
  56.         existFile=${tmpvar##*/}  
  57.         TMP_BACKUP_FLASH_TAR=''  
  58.                 if [ -f $1 -o -d $1 ];then  
  59.                         echo '[WARN] Flash dir '$1' has exists, it will be tar and backup.'  
  60.                         TMP_BACKUP_FLASH_TAR=$existFile'.tar'  
  61.             cd $subpath  
  62.                         echo '[INFO] Archieving '$existFile' to '$TMP_BACKUP_FLASH_TAR  
  63.                         tar -zcvf $TMP_BACKUP_FLASH_TAR $existFile  
  64.                         echo '[INFO] Removing dir '$existFile  
  65.                         rm -rf $existFile  
  66.             cd -  
  67.                 fi  
  68.         unset tmpvar  
  69.         unset subpath  
  70.         unset existFile  
  71.                 unset TMP_BACKUP_FLASH_TAR  
  72. }  
  73.   
  74. prepareClientDir(){  
  75.     checkIfFileExistAndDoSomething $CLIENT_NEW_PATH  
  76.     if [ $CLIENT_INIT_VERSION -eq $CLIENT_OLD_VERSION ];then  
  77.         #第一次使用  
  78.         #創建目錄  
  79.         echo '[INFO] First create the flash dir '$CLIENT_NEW_PATH  
  80.         mkdir -p $CLIENT_NEW_PATH  
  81.     else  
  82.         #非第一次使用,修改flash名字  
  83.         echo '[INFO] Copying '$CLIENT_OLD_PATH' to '$CLIENT_NEW_PATH  
  84.         mv $CLIENT_OLD_PATH $CLIENT_NEW_PATH  
  85.     fi  
  86.     if [ -d $CLIENT_NEW_PATH ];then  
  87.         IF_SUCC='TRUE'  
  88.     fi  
  89. }  
  90.   
  91. storeThisVersionIfSucc(){  
  92.     if [ -n $IF_SUCC ]; then  
  93.         echo $CLIENT_NEW_VERSION > $VERSION_FILE  
  94.         echo "<%String version = \"$CLIENT_NEW_VERSION\";%>" > $VERSION_CONFIG_FILE  
  95.     fi  
  96. }  
  97.   
  98. createClient(){  
  99.     echo '[INFO] Checking out flash version...'  
  100.     svn co $SVN_PATH $CLIENT_NEW_PATH --username=bqli --password=123456  
  101.     echo '[INFO] Checking out has finished.'  
  102. }  
  103.   
  104. updateClient(){  
  105.     echo '[INFO] Updating flash version...'  
  106.     svn update $CLIENT_NEW_PATH  
  107.     echo '[INFO] Updating has finished.'  
  108. }  
  109.   
  110. createOrUpdateClient(){  
  111.     if [ $CLIENT_INIT_VERSION -eq $CLIENT_OLD_VERSION ];then  
  112.         createClient  
  113.     else  
  114.         updateClient  
  115.     fi  
  116. }  
  117.   
  118. echoStartInfo(){  
  119.     echo '#################################################'  
  120.     echo '# 歡迎使用客戶端版本更新系統V1.0'  
  121.     echo '#################################################'  
  122. }  
  123.   
  124. echoEndInfo(){  
  125.     echo '[SUCC] Finished.'  
  126. }  
  127.   
  128. clear  
  129. echoStartInfo  
  130. initVersionFileIfNoExist  
  131. initClientNewVersion  
  132. prepareClientDir  
  133. createOrUpdateClient  
  134. storeThisVersionIfSucc  
  135. echoEndInfo  
Copyright © Linux教程網 All Rights Reserved