两集合比较判断

太过爱你忘了你带给我的痛 2022-03-27 03:59 217阅读 0赞

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

具体需求如下:

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

参考脚本如下:

  1. #!/bin/bash
  2. #判断更新包是否遗漏
  3. DATA=/data
  4. client_all="$DATA/agent-client.tgz $DATA/manager-client.tgz $DATA/merchant-client.tgz $DATA/online-client.tgz $DATA/partner-client.tgz"
  5. client="`find $DATA -name "*-client.tgz"`"
  6. if [ "$1" = "client" ];then
  7. for file_all in $client_all
  8. do
  9. stats=0
  10. sum=0
  11. for file_client in $client
  12. do
  13. if [ "$file_all" == "$file_client" ];then
  14. stats=1
  15. break
  16. return $stats
  17. fi
  18. done
  19. sum=$[ $sum + $stats ]
  20. if [ "$stats" == 1 ];then
  21. echo -e "\033[36m $file_client 已存在 \033[0m"
  22. else
  23. echo -e "\033[31m $file_all 不存在 \033[0m"
  24. fi
  25. done
  26. if [ "$sum" < 5 ];then #5个更新包,有一个包不存在,则sum会小于5,直接不更新
  27. break
  28. else
  29. 具体更新操作
  30. fi
  31. fi
  32. $1

说明:

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


发表评论

表情:
评论列表 (有 0 条评论,217人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MySQL集合比较

    这个问题还炸了群。。。虽然没解决,但很是开心 需求:数据库中存的是字符串数组,然后请求参数又是字符串数组。。需要从两个数组中拿出参数进行比较,如果匹配成功就拿出这条数据

    相关 常见集合比较

    Hashmap 和hashtable的区别 1 HashMap不是线程安全的 ,HashTable是线程安全的 ,由于非线程安全,效率上可能高于Hashtable。 H