两集合比较判断
在生产环境下,有时我们会使用脚本来进行包的更新。这就涉及到一个问题:假如同时更新几十上百个包,我们要使用脚本中某个指定参数来完成,偶尔犯错就有可能将更新包遗漏一两个。因此,我们需要进行判断,提示遗漏的包,只要包有所遗漏就不进行更新,所有包齐全才会进行更新。
具体需求如下:
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
说明:
其实是两个集合的比较判断,类似求两集合的差集,双循环判定更新包是否存在。若全部存在,则进行更新;否则不更新,同时提示遗漏的更新包。
还没有评论,来说两句吧...