条件选择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

相关推荐

  • linux上的文本三剑客之grep和文本查看工具

    linux上文本处理三剑客 grep,egrep,fgrep:文本过滤工具(模式:pattern)工具:     grep:基本正则表达式,-E:支持扩展正则表达式,-F:不支持正则表达式     egrep:扩展正则表达式,-G:支持基本正则表达式 ,-F:不支持正则表达式 &…

    Linux干货 2016-08-07
  • 正则表达式

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户都没有任何访问权限 [root@localhost ~]#  mkdir /home/tuser1======>创建/home/tuser1目录 [root@localhost ~]#   cp  -a  /etc/skel/   /hom…

    2017-10-10
  • 学习Linux,记得有困难,找“男人”。

      对于Linux初学者而言,较短时间内需要涉及到几十个命令,而且每个命令还可辅以短选项、长选项…让初学者在实践时苦不堪言。   一头雾水时,请找Super"man"!  "man"的使用非常简单,命令行直接输入man COMMAND,如#man ls。此处的COMMAND均指…

    Linux干货 2016-01-15
  • 用户管理权限命令总结

    用户 Linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。 用户分类 超级用户:(root,UID=0) 普通用户:(UID在500到60000) 伪用户:(UID在1到499) 系统和服务相关的:bin、daemon、shutdown等 进程相…

    Linux干货 2017-04-03
  • 浅谈HTTP协议以及httpd的十八般武艺

      初识HTTP协议                HTTP(hyper text transfer protocal)作为互联网应用最广泛的协议,任何一个运维人员都无法回避它,HTTP的目的就是提供一种发布和…

    Linux干货 2016-02-14
  • ☞Web服务器之apache

    Web服务器之apache http协议 telnet的使用 curl命令 httpd的相关配置 welcome.conf — 403 forbidden 修改监听的端口和地址 保持连接 DSO 定义物理主机站点文档 资源访问授权 路径别名Alias 本地httpd-manual 开启status 日志设定 虚拟主机 基于用户的访问控制 httpd压力测试 …

    Linux干货 2016-10-08