linux运维基础:day03【if语句】

文章展示了如何在Linuxbash脚本中使用if条件判断进行流程控制,包括单条件、双条件和多条件判断,以及结合while循环实现反复执行的逻辑。同时,提到了函数的定义和调用方法,通过案例解释了如何根据系统版本配置yum仓库和安装不同软件服务版本。
摘要由CSDN通过智能技术生成

一、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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值