在条件测试一文中,通过逻辑测试已经可以通过&&
和||
完成简单的条件判断,并执行相应的操作,但是当需要判断的条件过多时,就会显得逻辑测试的方法的代码复杂,不好理解。而使用if
条件语句,就可以让代码结构清晰易懂。
if语句结构
if语句的执行,可以简单的理解为我们自己的话,就是“如果…那么…”,根据不同的复杂程度,if语句可以分为三种类型:单分支if语句、双分支if语句、多分支if语句,适用于不同的应用场合。
单分支if语句
if语句的“分支”,指的是不同测试结果对应的一条或者多条命令。对于单分支的结构,只有在条件成立(返回值为0),才会执行对应的命令。否则不执行任何操作。
语法格式
if 条件测试操作
then
命令序列
fi
在单分子语句结构中,条件测试操作可以是条件表达式,也可以是其他命令语句,命令序列指的就是可执行命令。
单分支if语句执行流程:如果条件测试操作返回值为0,那么执行then后面的命令序列,然后fi结束判断,如果条件测试操作返回值为1,那么直接fi结束判断。
如:判断目录是否存在,如果不存在,则创建目录
#!/bin/bash
WORKDIR=/cyj
if [ ! -d $WORKDIR ]
then
mkdir -p $WORKDIR
fi
双分支if语句
对于双分支的结构,就可以弥补单分支语句在条件测试操作返回值为1时的无结果返回。
语法格式
if 条件测试操作
then
命令序列1
else
命令序列2
fi
双分支if语句执行流程:如果条件测试操作返回值为0,则执行then后的命令序列,而不执行else后的命令序列,然后fi结束判断;如果条件测试操作返回值为1,则执行else后的命令序列,然后fi结束判断。
如:判断目录是否存在,存在输出目录已存在,反之创建目录并输出目录已创建
#!/bin/bash
WORKDIR=/cyj
if [ -d $WORKDIR ]
then
echo "Directory already exists"
else
mkdir -p $WORKDIR
echo "Directory created"
fi
多分支if语句
多分支比双分支可以判断更多的条件测试
语法格式
if 条件测试操作1
then
命令序列1
elif 条件测试操作2
then
命令序列2
elif 条件测试操作3
then
命令序列3
else
命令序列4
fi
多分支if语句执行流程:如果条件测试操作1返回值为0,则执行命令序列1,然后fi结束判断,如果返回值为1,则继续判断条件测试操作2,如果返回值为0,执行命令序列2,然后fi结束判断,如果返回值为1,进行条件测试操作3,如果返回值为0,则执行命令序列3,然后fi结束判断。如果3种测试操作返回值都为1,则执行命令序列4,然后fi结束判断。
如:判断成绩是优秀还是及格或者不及格
#!/bin/bash
read -p "Please ent your grades(1-100): " GRADES
if [ -z $GRADES ]
then
echo "Please enter your grades as required"
exit 1
elif [ $GRADES -ge 85 ] && [ $GRADES -le 100 ]
then
echo "Your grades are excellent"
elif [ $GRADES -lt 85 ] && [ $GRADES -ge 60 ]
then
echo "Your grades have passed"
elif [ $GRADES -lt 60 ] && [ $GRADES -gt 0 ]
then
echo "Your grades failed!!!"
else
echo "Please enter an integer from 1 to 100"
fi