2022/03/29日记录
编写自动化代码,需要通过shell脚本,自动卸载和安装客户端,由此编写此shell脚本。
需求:
卸载和安装客户端
1、卸载原有的安装目录和文件,写成函数
2、重新安装,写成函数
整体脚本如下:
包括:
1、判断是否是目录,然后删除
2、查看包含关键字的目录,然后遍历删除(这里是for循环)
#!/bin/bash
#Date=20220329
#Author HMF
uninstall_sdk()
{
pwdDir=`pwd`
cd $pwdDir
echo "当前工程目录:"$pwdDir
echo "-----------------------卸载SDK---------------------------"
#删除安装的SDK
casbDir=`find /opt -name "casb"`
if [ -d $casbDir ];then
rm -rf $casbDir
echo $casbDir"SDK安装目录:/opt/casb存在,进行删除"
fi
#删除sdk解压后的目录和文件
for line in `ls -l |grep ^d |grep "sdk-" |awk '{print $9}'`
do
if [ -d $line ];then
rm -rf $line
echo "删除目录"$line
fi
done
echo "---------------------------------------------------------"
}
install_sdk()
{
sdkZip=`ls sdk-*.zip`
if [ -f "$sdkZip" ]; then
#SDK解压缩
echo "-----------------------SDK解压缩---------------------------"
unzip $sdkZip
echo "-----------------------------------------------------------"
#进入安装包目录,执行安装
sdkDir=`ls -l |grep ^d |grep "sdk-" |awk '{print $9}'`
cd $sdkDir
echo "进入SDK客户端解压后的目录:"$sdkDir
chmod +x sdk-install.sh
echo "----------------------shell脚本安装SDK---------------------"
sudo sh sdk-install.sh
echo "-----------------------------------------------------------"
#加载环境变量
source /etc/profile
echo "LD_LIBRARY_PATH:"$LD_LIBRARY_PATH
fi
}
echo "----------------Java调用shell脚本解压/安装SDK客户端,开始-------------------"
uninstall_sdk
install_sdk
echo "----------------Java调用shell脚本解压/安装SDK客户端,结束-------------------"
另外一种while循环:
#删除sdk解压后的目录和文件
sdk_oldDir=$(ls -l |grep ^d |grep "sdk-" |awk '{print $9}')
while read line
do
if [ -d $line ];then
rm -rf $line
echo "删除目录"$line
fi
done <<< "$sdk_oldDir"
其他说明:
可以用命令直接删除:
$ls -l |grep ^d |grep "sdk-" |awk '{print $9}' |xargs rm -rf
但在脚本中考虑健壮性需要遍历并判断是否是目录再删除。
解释:
$ls -l | grep ^d --->只列出当前目录的目录
$awk '{print $9}' -->打印第9个
查找目录两种方式:
方式一:
ls -l |grep ^d |grep "sdk-" |awk '{print $9}'
方式二:
find / -type d -name 'sdk-*'