在生产环境下,有时我们会使用脚本来进行包的更新。这就涉及到一个问题:假如同时更新几十上百个包,我们要使用脚本中某个指定参数来完成,偶尔犯错就有可能将更新包遗漏一两个。因此,我们需要进行判断,提示遗漏的包,只要包有所遗漏就不进行更新,所有包齐全才会进行更新。

具体需求如下:

1)脚本名为update,指定参数为client;2)更新包所在目录为 /data ;3)更新包分别是agent-client.tgz 、 manager-client.tgz 、merchant-client 、online-client.tgz 、partner-client.tgz4)全部更新包都存在才进行更新,否则不更新

参考脚本如下:

#!/bin/bash#判断更新包是否遗漏DATA=/dataclient_all="$DATA/agent-client.tgz  $DATA/manager-client.tgz  $DATA/merchant-client.tgz  $DATA/online-client.tgz  $DATA/partner-client.tgz"client="`find  $DATA -name "*-client.tgz"`"if [ "$1" = "client" ];thenfor file_all in $client_alldo    stats=0sum=0    for file_client in $client    do        if [ "$file_all" == "$file_client" ];then            stats=1            break            return $stats        fi    donesum=$[ $sum + $stats ]    if [ "$stats" == 1 ];then        echo -e "\033[36m $file_client 已存在 \033[0m"        else        echo -e "\033[31m $file_all 不存在 \033[0m"    fidoneif [ "$sum" < 5 ];then             #5个更新包,有一个包不存在,则sum会小于5,直接不更新breakelse具体更新操作fifi$1

说明:

其实是两个集合的比较判断,类似求两集合的差集,双循环判定更新包是否存在。若全部存在,则进行更新;否则不更新,同时提示遗漏的更新包。


©著作权归作者所有:来自51CTO博客作者80民工的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 通过kuboard更新镜像版本
  2. 虚假软件更新滥用NetSupport远程访问工具
  3. 华为联运游戏或应用审核驳回:游戏启动后弹出HMS Core更新提示,点击
  4. Citrix MCS桌面模板更新
  5. DanaBot***更新C2通信
  6. 【DB笔试面试571】在Oracle中,如何提高DML语句的效率?
  7. Ansible批量更新远程主机用户密码 - 运维笔记
  8. Linux编程 18 安装软件程序(yum工具对软件包安装,删除,更新介绍)
  9. 关于Java的那些事

随机推荐

  1. Android 自定义TextView去除paddingTop和
  2. android studio 更新3.0后多渠道打包配置
  3. (Android)搭建NDK开发环境 (二)
  4. Android音量相关知识总结(三)调节音量流程
  5. Android命令行获取WiFi列表以及参数
  6. Activity 与 ActivityManagerService 的
  7. Android(安卓)设置图片 Bitmap任意透明度
  8. HasMap 与 SparseArray
  9. Android中的AOP
  10. 最简单的android底部导航栏 + Fragment的