兩集合比較判斷
在生產環境下,有時我們會使用指令碼來進行包的更新。這就涉及到一個問題:假如同時更新幾十上百個包,我們要使用指令碼中某個指定引數來完成,偶爾犯錯就有可能將更新包遺漏一兩個。因此,我們需要進行判斷,提示遺漏的包,只要包有所遺漏就不進行更新,所有包齊全才會進行更新。
具體需求如下:
1)指令碼名為update,指定引數為client;
2)更新包所在目錄為 /data ;
3)更新包分別是agent-client.tgz 、 manager-client.tgz 、merchant-client 、online-client.tgz 、partner-client.tgz
4)全部更新包都存在才進行更新,否則不更新
參考指令碼如下:
#!/bin/bash
#判斷更新包是否遺漏
DATA=/data
client_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" ];then
for file_all in $client_all
do
stats=0
sum=0
for file_client in $client
do
if [ "$file_all" == "$file_client" ];then
stats=1
break
return $stats
fi
done
sum=$[ $sum + $stats ]
if [ "$stats" == 1 ];then
echo -e "\033[36m $file_client 已存在 \033[0m"
else
echo -e "\033[31m $file_all 不存在 \033[0m"
fi
done
if [ "$sum" < 5 ];then #5個更新包,有一個包不存在,則sum會小於5,直接不更新
break
else
具體更新操作
fi
fi
$1
說明:
其實是兩個集合的比較判斷,類似求兩集合的差集,雙迴圈判定更新包是否存在。若全部存在,則進行更新;否則不更新,同時提示遺漏的更新包。
相關文章
- 使用帶型別判斷的比較判斷型別
- 不用做任何比較判斷運算子找出兩個整數中的較大的值
- 比較集合
- 集合類的比較
- kotlin 集合內元素比較Kotlin
- Java中陣列判斷元素存在幾種方式比較詳解Java陣列
- Java中List集合效能比較Java
- 【質數判斷】給定兩個數,判斷這兩個數是否互質?
- js判斷兩個物件是否相等JS物件
- 比較兩個table是否相同
- JavaScript比較兩個時間JavaScript
- JavaScript判斷兩個變數是否相等JavaScript變數
- 2011-10-31 對集合的密集性判斷
- 判斷Map集合中是否存在某一個key
- 比較兩個陣列是否相等陣列
- JDK是如何判斷兩個物件是否相同的?判斷的流程是什麼?JDK物件
- MyBatis陣列與集合判斷非空和長度MyBatis陣列
- golang中判斷兩個slice是否相等與判斷值下的 陣列是否相等Golang陣列
- JavaScript 中,如何判斷兩個物件是否相等?JavaScript物件
- matlab比較兩個矩陣是否相等Matlab矩陣
- python如何比較兩個字串是否相等Python字串
- PyCharm與VSCode兩種IDE比較 - towardsdatasciencePyCharmVSCodeIDE
- pandas比較兩個文件的差異
- Javers 比較兩個類的差異
- java判斷集合是否包含某個範圍內的值Java
- abc250E 判斷字首構成的集合是否相等
- 如何判斷JavaScript中的兩變數是否相等?JavaScript變數
- 集合差異比較演算法及效能測試演算法
- C++ - 比較兩個浮點數大小C++
- java stream()流對兩個集合進行比對Java
- C#比較兩個字串的相似度【轉】C#字串
- 怎麼判斷dns汙染,怎麼判斷dns汙染,具體判斷方法DNS
- 動態生成表-判斷表是否存在效能對比
- JS的判斷語句:判斷、迴圈JS
- 空間或平面判斷兩線段相交(求交點)
- 如何判斷兩條軌跡(或曲線)的相似度?
- if 判斷使用
- js 深比較和淺比較JS