一、if判断
语法结构:
第一种写法:then在表达式的后面,需要在表达式后面加;
if [ 表达式成立 ]; then
执行的具体命令集合
fi
第二种写法:then在if的下面,表达式后面不要加;
if [ 表达式成立 ]
then
执行的具体命令集合
fi
语句:
第一种语句:一条判断一个结果
if [ 你有钱 ] #表达式
then #表达式成功
我就嫁给你 #执行的命令
fi
第二种语句:一条判断两个结果
if [ 你有钱 ] #表达式
then
我就嫁给你 #表达式成功,执行的命令
else #否则执行
拜拜
fi
第三种语句:多条判断,多条结果,满足某条判断,执行某个结果
if [ 你有钱 ] #表达式1
then
我就嫁给你 #命令1
elif [ 你有房 ] #表达式2
then
我也嫁给你 #命令2
elif [ 你有车 ] 表达式3
then
我也嫁给你 #命令3
else #否则
滚 #命令4
fi
案例1:根据系统版本号配置安装对应的yum仓库
[root@test day03]# cat yum.sh
#!/bin/bash
#1.变量配置 系统版本号
os_ve=`hostnamectl|awk 'NR==7{print $(NF-1)}'`
mv_yum='mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup'
#2.判断网络
ping -c1 -W1 www.baidu.com &>/dev/null
if [ $? -ne 0 ];then
echo "网络检查失败,正在重启网络..."
systemctl restart network
ping -c1 -W1 www.baidu.com &>/dev/null
if [ $? -ne 0 ];then
echo "网络重启完成,无法联网,请手动检查网络问题"
exit
fi
fi
#3.判断系统是否安装wget命令
which wget &>/dev/null
if [ $? -ne 0 ];then
echo "wget命令未安装,正在安装中,请稍后..."
yum -y install wget &>/dev/null
if [ $? -eq 0 ];then
echo "wget安装成功!"
else
echo "wget安装失败,请手动安装测试"
fi
fi
#4.比对版本执行安装yum仓库
if [ $os_ve -eq 7 ];then
$mv_yum
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null
if [ $? -eq 0 ];then
echo " YUM仓库配置完成"
fi
elif [ $os_ve -eq 6 ];then
$mv_yum
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-6.10.repo
if [ $? -eq 0 ];then
echo " YUM仓库配置完成"
fi
elif [ $os_ve -eq 8 ];then
$mv_yum
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
if [ $? -eq 0 ];then
echo " YUM仓库配置完成"
fi
fi
[root@test day03]# sh yum.sh
网络检查失败,正在重启网络...
wget命令未安装,正在安装中,请稍后...
wget安装成功!
YUM仓库配置完成
案例2 :安装不同的软件服务版本
[root@test day03]# cat server.sh
#!/bin/bash
while true
do
menu1(){
echo -e "\t\t\t\033[31m 1.php \033[0m"
echo -e "\t\t\t\033[32m 2.nginx \033[0m"
echo -e "\t\t\t\033[33m 3.mysql \033[0m"
echo -e "\t\t\t\033[33m 4.tomcat \033[0m"
echo -e "\t\t\t\033[33m 5.退出 \033[0m"
}
menu2(){
echo -e "\t\t\t\033[31m 1.php5.4 \033[0m"
echo -e "\t\t\t\033[32m 2.php5.5 \033[0m"
echo -e "\t\t\t\033[33m 3.php7.1 \033[0m"
echo -e "\t\t\t\033[33m 4.返回上级菜单 \033[0m"
echo -e "\t\t\t\033[33m 5.显示帮助 \033[0m"
}
menu1
read -p "请输入您要安装的服务: " num1
menu2
while true
do
if [ $num1 -eq 1 ];then
read -p "请选择你要安装的版本号: " num2
if [ $num2 -eq 1 ];then
echo "正在安装php5.4..."
elif [ $num2 -eq 2 ];then
echo "正在安装php5.5..."
elif [ $num2 -eq 3 ];then
echo "正在安装php7.1..."
elif [ $num2 -eq 4 ];then
break
elif [ $num2 -eq 5 ];then
menu2
fi
fi
done
done
二、while循环
语法:
while true
do
循环体
...
done
三、函数
语法:
函数名(){
表达式。。。
变量。。
}
函数的调用直接输入函数名即可
案例:jumpserver
#!/bin/bash
WEB01=10.0.0.7
WEB02=10.0.0.8
NFS=10.0.0.31
MySQL=10.0.0.51
BACKUP=10.0.0.41
echo -e "\t\t\t\033[32m 1.运维 \033[0m"
echo -e "\t\t\t\033[32m 2.开发 \033[0m"
menu1(){
echo -e "\t\t\t\033[32m 1.$WEB01 \033[0m"
echo -e "\t\t\t\033[32m 2.$WEB02 \033[0m"
echo -e "\t\t\t\033[32m 3.$NFS \033[0m"
echo -e "\t\t\t\033[32m 4.$MySQL \033[0m"
echo -e "\t\t\t\033[32m 5.$BACKUP \033[0m"
}
menu2(){
echo -e "\t\t\t\033[32m 1.$WEB01 \033[0m"
echo -e "\t\t\t\033[32m 2.$WEB02 \033[0m"
}
trap "" INT HUP TSTP
read -p "请输入你的岗位角色: " num
if [ $num -eq 1 ];then
while true
do
read -p "欢迎尊敬的运维工程师,请输入您的密码: " pass
if [ $pass != "123456" ];then
echo "密码输入错误请重新输入"
continue
else
break
fi
done
while true
do
menu1
read -p "请输入要连接服务器的编号: " num
case $num in
1)
ssh $WEB01
;;
2)
ssh $WEB02
;;
3)
ssh $NFS
;;
4)
ssh $MySQL
;;
5)
ssh $BACKUP
;;
woshiyunwei)
exit
;;
*)
echo "Usage $0 [1|2|3|4..]"
esac
done
elif [ $num -eq 2 ];then
while true
do
menu2
read -p "请输入要连接服务器的编号: " num
case $num in
1)
ssh $WEB01
;;
2)
ssh $WEB02
;;
*)
echo "Usage $0 [1|2]"
esac
done
fi