在条件测试一文中,通过逻辑测试已经可以通过&&||完成简单的条件判断,并执行相应的操作,但是当需要判断的条件过多时,就会显得逻辑测试的方法的代码复杂,不好理解。而使用if条件语句,就可以让代码结构清晰易懂。

if语句结构

if语句的执行,可以简单的理解为我们自己的话,就是“如果…那么…”,根据不同的复杂程度,if语句可以分为三种类型:单分支if语句、双分支if语句、多分支if语句,适用于不同的应用场合。

单分支if语句

if语句的“分支”,指的是不同测试结果对应的一条或者多条命令。对于单分支的结构,只有在条件成立(返回值为0),才会执行对应的命令。否则不执行任何操作。

语法格式

if 条件测试操作
then
命令序列
fi

在单分子语句结构中,条件测试操作可以是条件表达式,也可以是其他命令语句,命令序列指的就是可执行命令。

单分支if语句执行流程:如果条件测试操作返回值为0,那么执行then后面的命令序列,然后fi结束判断,如果条件测试操作返回值为1,那么直接fi结束判断。

single_if

如:判断目录是否存在,如果不存在,则创建目录

#!/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结束判断。

double_if

如:判断目录是否存在,存在输出目录已存在,反之创建目录并输出目录已创建

#!/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结束判断。

more_if

如:判断成绩是优秀还是及格或者不及格

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

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0