Shell脚本的if条件语句

目录

1.单分支结构

2.双分支结构

3.多分支结构

4.例题


1.单分支结构

实际上使用“&&”和“||”逻辑测试已经可以完成简单的判断并执行相应的操作,但是当需要选择执行的命令语句较多时,这种方式将使执行代码显得很复杂,不好理解。而使用专用的 if 条件语句,可以更好地整理脚本结构,使得层次分明, 清晰易懂

单分支 if 语句:对于单分支的选择结构,只有在“条件成立”时才会执行相应的代码,否则不执行任何操作。

语法格式:

if 条件测试操作 
then
命令序列 
fi    #注意后面有个结尾,开头结尾要凑成一对否则会报语法错误

原理图:

Shell脚本的if条件语句_第1张图片

实战:

2.双分支结构

在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了

格式:

if [ 条件判断式 ]; then
    当条件判断成立时,可以进行的命令工作内容
else   
    当条件判断不成立时,可以进行的命令工作内容
fi 

原理图:

Shell脚本的if条件语句_第2张图片

实操:

#!/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     

原理图:Shell脚本的if条件语句_第3张图片

和人机剪刀包子锤
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

你可能感兴趣的:(linux,运维,服务器)