条件选择if语句

单分支的if语句

if 判断条件; then

条件为真的分支代码

fi

 

    单分支if结构的执行流程:首先判断条件测试操作的结果,如果返回值为0表示条件成立,则执行then后面的命令序列,一直到遇见fi为止表示结束,继续执行其他脚本代码;如果返回不为0,则忽略then后面的命令序列,直接跳至fi行以后执行其他脚本代码。

条件选择if语句

 脚本代码

[root@localhost bin]# cat ifsingle.sh
#!/bin/bash
 
if [ `id -u` -eq 0 ]; then
         echo "The current is to use the administrator account."
fi

执行结果

[root@localhost bin]# ifsingle.sh
The current is to use the administrator account.

 

双分支的if语句

 

    对于双分支的选择结构来说,要求针对条件成立条件不成立两种情况分别执行不同的操作。

 

if 判断条件; then

条件为真的分支代码

else

条件为假的分支代码

fi

 

    双分支if结构的执行流程:首先判断条件测试操作的结果,如果条件成立,则执行then后面的命令序列1,忽略else及后面的命令序列2,直至遇见fi结束判断;如果条件不成立,则忽略then及后面的命令序列1,直接跳至else后面的命令序列2执行。直到遇见fi结束判断。

条件选择if语句

 脚本代码

[root@localhost bin]# cat checkip.sh
#!/bin/bash
# Description: Test whether or not the remote host can communication
 
read -p "Please input ip address: " ip
ping -c1 -W1 $ip &> /dev/null
if [ $? -eq 0 ]; then
         echo "Host is up"
else
         echo "Host is down"
fi

执行结果

[root@localhost bin]# checkip.sh
Please input ip address: 10.1.252.252 
Host is up
[root@localhost bin]# checkip.sh
Please input ip address: 10.1.252.22
Host is down

多分支

if 判断条件1

then

判断条件1为真的分支代码

elif 判断条件2

then

    判断条件2为真的分支代码

elif 判断条件n

then

判断条件n为真的分支代码

else

    判断条件n为假的分支代码

fi

if 判断条件1; then

判断条件1为真的分支代码

elif 判断条件2; then

    判断条件2为真的分支代码

elif 判断条件n; then

判断条件n为真的分支代码

else

    判断条件n为假的分支代码

fi

 

逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句

多分支if结构的执行流程:首先判断条件测试操作1的结果,如果条件1成立,则执行命令序列1,然后跳至fi结束判断;如果条件1不成立,则继续判断条件测试操作2的结果,如果添加2成立,则执行命令序列2,然后跳至fi结束判断;…..如果所有的条件都不满足,则执行else后面地命令序列n,直到fi结束判断。

实际上可以嵌套多个elif语句。If语句的嵌套在编写Shell脚本是并不常用,因此多重嵌套容易使程序结构变得复杂。当确实需要使用多分支的程序结构是,建议采用case语句要更加方便。

条件选择if语句

 脚本代码

[root@localhost bin]# cat checkgrade.sh
#!/bin/bash
# Description:
read -p "input you grade(0-100):" grade
if [ $grade -ge 85 ] && [ $grade -le 100 ]; then
         echo "you grade is very good!"
elif [ $grade -ge 60 ] && [ $grade -le 84 ]; then
         echo "you grade is good!"
elif [ $grade -gt 100 ]; then
         echo "error! please input 0-100!"
else
         echo "you so bad!"
fi

执行结果

[root@localhost bin]# checkgrade.sh
input you grade(0-100):80
you grade is good!
[root@localhost bin]# checkgrade.sh
input you grade(0-100):50
you so bad!
[root@localhost bin]# checkgrade.sh
input you grade(0-100):98  
you grade is very good!
[root@localhost bin]# checkgrade.sh
input you grade(0-100):33
you so bad!

原创文章,作者:cyh5217,如若转载,请注明出处:http://www.178linux.com/36012

(0)
cyh5217cyh5217
上一篇 2016-08-16 13:59
下一篇 2016-08-16 13:59

相关推荐

  • 如何在CentOS上构架一个简易的局域网web服务器

    首先,要取得适用你系统版本的http源码包,这里推荐两个网站: httpd.apache.org www.kernel.org 根据自己系统的版本下载相应的源码包; CentOS7 下载 httpd-2.4.25.tar CentOS6 下载 httpd-2.2.32.tar 以CentOS 6 示例: 首先,我们先来为http…

    2017-03-09
  • 第十一周作业

    1、详细描述一次加密通讯的过程,结合图示最佳。 发送者:     1)使用单向加密算法提取要发送文件的特征码;     2)使用自己的私钥加密特征码并附加在数据后面;     3)生成用于对称加密的临时密码;     4)用此临时密钥加密数据和已经使用私钥加密后的特征码; &nb…

    2017-03-20
  • keepalive配置文件详解

    第一部分:全局定义块 1、email通知。作用:有故障,发邮件报警。 2、Lvs负载均衡器标识(lvs_id)。在一个网络内,它应该是唯一的。 3、花括号“{}”。用来分隔定义块,因此必须成对出现。如果写漏了,keepalived运行时,不会得到预期的结果。由于定义块内存在嵌套关系,因此很容易遗漏结尾处的花括号,这点要特别注意。 global_defs{ n…

    2017-09-17
  • ![](http://i1.pixiv.net/img-original/img/2016/08/09/20/23/25/58345400_p0.jpg) ![](http://i1.pixiv.net/img-original/img/2016/08/09/20/23/25/58345400_p0.jpg)

    Linux干货 2016-12-26
  • Linux逻辑卷LVM实现

    Linux逻辑卷LVM实现 背景: 在学习Linux中,学习到了逻辑卷LVM,发现LVM是个十分好用的一个技术,可以多个硬盘合并在一起使用,同时还可以动态的增加和减少。在这里将Linux逻辑卷的具体实现记录下来。 介绍: 逻辑卷LVM:Logica Volum Manager,它是Linux环境下对磁盘分区进行管理的一种机制,普通的磁盘分区管理方式在逻辑分区…

    2017-08-12
  • tomcat优化

    安装过程就不多说了,本次主要说明我在实际工作中的一些优化。    1,修改tomcat的运行模式,常见的有 bio,nio, apr三种    我选择的apr模式,这种对tomcat的性能有较大提高. a:可以根据压力测试工具来进行测试观察。(其实我没对修改apr模式后压测,我直接问百度的) b:重新启动tomcat后…

    Linux干货 2016-06-28