目录
1.单分支结构
2.双分支结构
3.多分支结构
4.例题
1.单分支结构
实际上使用“&&”和“||”逻辑测试已经可以完成简单的判断并执行相应的操作,但是当需要选择执行的命令语句较多时,这种方式将使执行代码显得很复杂,不好理解。而使用专用的 if 条件语句,可以更好地整理脚本结构,使得层次分明, 清晰易懂
单分支 if 语句:对于单分支的选择结构,只有在“条件成立”时才会执行相应的代码,否则不执行任何操作。
语法格式:
if 条件测试操作
then
命令序列
fi #注意后面有个结尾,开头结尾要凑成一对否则会报语法错误
原理图:
实战:
2.双分支结构
在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了
格式:
if [ 条件判断式 ]; then
当条件判断成立时,可以进行的命令工作内容
else
当条件判断不成立时,可以进行的命令工作内容
fi
原理图:
实操:
#!/bin/bash
#先检查80端口是否开启,如果开启则反馈httpd 正>在运行 否则 启动 httpd服务
systemctl status httpd &>/dev/null
if [ $? -eq 0 ];then
echo "http 服务正在运行"
else
systemctl start httpd
if [ $? -eq 0 ]
then
echo "服务正常启动"
else
echo "service is not running please check it"
fi
fi
#安装 httpd 软件, 先判断系统类型,如果是 centos yum httpd -y 如果是 ubuntu apt install apache2
3.多分支结构
如果数据需要进行多种不同的判断,则可以使用多分支结构
格式:
if [ 条件判断式 ]; then
当条件判断成立时,可以进行的命令工作内容
elif [ 条件判断式二 ]; then
当条件判断成立时,可以进行的命令工作内容
else
当上面的条件判断都不成立时,可以进行的命令工作内容
fi
原理图:
和人机剪刀包子锤
read -p "请输入1(包)2(剪) 3(锤):" h
m=`echo $[RANDOM%3+1]`
#平局
if [$h -eq $m];them
echo "平局"
elif [$h -eq 1 -a $m -eq 3 -o $h -eq 2 -a $m -eq1 -0 $h -eq 3 -a $m -eq2];then
echo"你赢了”
else
echo“你输了”
fi
#/bin/bash
# 90--100优秀 70-89良好 60-69及格 0-59不及格 其他输错请重新输入
read - p “请输入你的分数(0-100的正整数):“ number
if [ $num -ge 90 -a $num -le 100];then
echo "优秀"
elif [ $num -ge 70 -a $num -le 89];then
echo "良好”
elif [ $num -ge 60 -a $num -le 79];then
echo“及格”
elif [ $num -ge 0 -a $num -le 59];then
echo“不及格”
else
echo “输入有误,请重新输入”
bash $0
fi
4.case语句
case 变量名称 in
“第一个变量内容”
程序段
;;
“第二个变量内容”
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其他程序执行段
默认程序段
;;
esac
输入一个字符 判断输入的是 字母数字还是特殊字符
read -p “请输入一个字符:”key
case $key in
[a -z] |[A-Z]
echo "你输入的是字母"
;;
*)
[0-9]
echo "您输入的是数字"
;;
*)
echo "您输入的是特殊字符"
;;
esac
判断输入的yes(y ,Y ,yEs ,YeS,yeS,YES ) 或no (N,n,nO,No,NO)
read -p "请输入yes或者no":i
case $i in
[Yy]|[Yy] [Ee] [Ss]
echo "您请输入的yes"
;;
[Nn] |[Nn] [oO]
echo "您输入的no"
;;
*)
echo"您输入有误请重新输入yes或no“
bash $0
;;
esac