if条件测试语句

if条件语句可以让脚本根据实际情况的不同而自动切换命令执行方案,从技术角度上来说分为单分支结构、双分支结构、多分支结构,复杂度随着灵活度一起逐级上升。详情请关注《linux就该这么学》。

操作方法

  • 01

    单分支的if条件语句结构,这种结构仅用if、then、fi关键词组成,只在条件成立后才执行预设命令,相当于口语的“如果……那么……”,属于最简单的一种条件判断结构,操作语法如图所示: 使用单分支的if条件语句来判断某个目录是否存在,若已经存在就结束条件判断和整个Shell脚本,而如果不存在则去创建这个目录: [root@linuxprobe ~]# vim mkcdrom.sh #!/bin/bash DIR="/media/cdrom" if [ ! -e $DIR ] then mkdir -p $DIR fi 因为第5章才会去学习用户身份与权限,此时继续直接用“bash 脚本名称”的方式来执行脚本即可,顺利执行脚本文件后正常情况下是没有任何输出信息的,咱们可以使用ls命令验证下这个目录是否已经成功创建: [root@linuxprobe ~]# bash mkcdrom.sh [root@linuxprobe ~]# ls -d /media/cdrom /media/cdrom

  • 02

    双分支的if条件语句结构,这种结构仅用if、then、else、fi关键词组成,进行两次条件判断匹配,两次判断中任何一项匹配成功后都会执行预设命令,相当于口语的“如果……那么……或者……那么……”,也是属于很简单的一种条件判断结构,操作语法如图所示: 使用双分支的if条件语句来验证某个主机是否在线,然后根据判断执行返回值结果分别给予对方主机是在线还是不在线的提示信息。脚本中我主要是使用ping命令来测试与对方主机的网络联通性,而linux系统中的ping命令不像windows系统一样仅会尝试四次就结束,因此为了避免用户等待时间过长,而通过-c参数来规定尝试的次数,-i参数定义每个数据包的发送间隔时间以及-W参数定义最长的等待超时时间。 [root@linuxprobe ~]# vim chkhost.sh #! /bin/bash ping -c 3 -i 0.2 -W 3 $1 &> /dev/null if [ $? -eq 0 ] then echo "Host $1 is On-line." else echo "Host $1 is Off-line." fi

  • 03

    咱们在4.2.3小节中用过$?变量,作用是显示上一次命令的执行返回结果,若上一条语句是顺利执行成功的则会返回数字0,而若上一条语句执行是失败的则返回一个非零的数字(随系统版本差异可能会是1或者2都有可能),因此可以通过用数字条件测试的方法判断$?变量是否等于零来获知上一条语句的最终判断情况,192.168.10.10是服务器本机地址,验证下脚本的效果吧: [root@linuxprobe ~]# bash chkhost.sh 192.168.10.10 Host 192.168.10.10 is On-line. [root@linuxprobe ~]# bash chkhost.sh 192.168.10.20 Host 192.168.10.20 is Off-line.

  • 04

    多分支的if条件语句结构,这种结构需要使用if、then、else、elif、fi关键词组成,进行多次条件判断匹配,多次判断中任何一项匹配成功后都会执行预设命令,相当于口语的“如果……那么……如果……那么……N次等等”,这是一种工作中最常使用的条件判断结构,虽然相对复杂但更加灵活,操作语法如图所示: 使用多分支的if条件语句来判断用户输入的分数在那个成绩区间内,然后输出如优秀、合格、不合格等提示信息。read是用来读取用户输入信息的命令,它能够把接收到的用户输入信息赋值给后面的指定变量,而-p参数则是给予了用户一定的提示信息。下面实例中判断用户输入的分数是否同时具备大于等于85分且小于等于100分,这样的话才输出Excellent字样,若上一条件没有匹配成功则继续判断用户输入分数是否大于等于70分且小于等于84分,这样的话输出Pass字样,如果两次都落空没有匹配成功,则最终输出Fail字样: [root@linuxprobe ~]# vim chkscore.sh #!/bin/bash read -p "Enter your score(0-100):" GRADE if [ $GRADE -ge 85 ] && [ $GRADE -le 100 ] ; then echo "$GRADE is Excellent" elif [ $GRADE -ge 70 ] && [ $GRADE -le 84 ] ; then echo "$GRADE is Pass" else echo "$GRADE is Fail" fi [root@linuxprobe ~]# bash chkscore.sh Enter your score(0-100):88 88 is Excellent [root@linuxprobe ~]# bash chkscore.sh Enter your score(0-100):80 80 is Pass 如果用户输入的分数并没有满足第一项匹配条件,则会自动进行下面的匹配流程: [root@linuxprobe ~]# bash chkscore.sh Enter your score(0-100):30 30 is Fail [root@linuxprobe ~]# bash chkscore.sh Enter your score(0-100):200 200 is Fail

(0)

相关推荐

  • while条件循环语句

    这是一种让脚本根据某些条件来重复执行命令的条件循环语句,而这种循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目的.有范围的使用场景.而while循环语句判断是否继续执行命令的 ...

  • linux Shell脚本之测试语句

    在Shell脚本中要经常做各种测试,测试语句的格式: (1)test <测试表达式> (2) [<测试表达式>] (3) [[<测试表达式>]] 三种的区别,在第三 ...

  • excel条件IF语句实例

    在处理EXCEL时,常常会想根据某一条件,自动赋值,这样可以节省很多事情并提高效率.如,学生成绩是60分时,自动赋值"合格".下面就从实例一步一步讲解IF语句. 操作方法 01 先 ...

  • shell中条件测试

    shell中条件测试

  • 如何用IF函数判断excel数值和做条件测试

    在工作中我们经常会遇到需要判断某一个数值的筛选条件的问题,比如说我们在判断一个人考试成绩是否及格的时候,但是如果要我们一个个手动判断,那一定是非常巨大的工程. 操作方法 01 我们在筛选判断一群人的分 ...

  • linux shell 条件判断语句整理

    常用系统变量 $0 当前程式的名称 $n 当前程式的第n个参数,n=1,2,…9 $* 当前程式的任何参数(不包括程式本身) $# 当前程式的参数个数(不包括程式本身) $$ 当前程式的PID $! ...

  • Matlab if elseif else条件语句如何使用?

    编写程序经常会遇到使用if-else条件判断的情况,接下来介绍其详细用法.if-elseif非常实用,即使判断条件较多都可正常运行,但是判断条件较多,可能程序阅读及编写不便.接着会介绍其简化方法,在条 ...

  • MATLAB IF 条件语句 用法以及实例

    操作方法 01 MATLAB中我们常常用到条件判断语句结构,下面我们就通过实例介绍一下这个结构的用法 02 if.....end结构 我们用如下条件语句进行实例 运行上面的句子,此条件语句是判断5是否 ...

  • linux shell 常用脚本语句语法收集 推荐

    linux shell 常用脚本语句语法收集 推荐