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

相关推荐

  • shell练习

    1 、编写脚本/root/bin/systeminfo.sh, 显示当前主机系统信息, 包括主机名,IPv4 地址,操作系统版本,内核版本,CPU 型 号,内存大小,硬盘大小。 运行后结果是: 2 、编写脚本/root/bin/backup.sh ,可实现每日将/etc/ 目录备 份到/root/etcYYYY-mm-dd中 运行结果是: 3 、编写脚本/r…

    Linux干货 2016-08-15
  • 用户组管理系列(二):权限设置

    1、权限简介    操作系统中每个文件都拥有特定的权限、所属用户和所属组。权限是操作系统用来限制资源访问的机制,在Linux中权限一般分为读(readable)、写(writable)和执行(excutable),分为三组。分别对应文件的属主(owner),属组(group)和其他用户(other),通过这样的机制来限制哪些用户、哪些组可…

    Linux干货 2016-08-05
  • Linux中的cut、sort、uniq以及用户(组)管理类指令应用示例

    Linux中的cut、sort、uniq指令 列出当前系统上所有已经登录的用户的用户名,注意:同一用户登录多次,只显示一次。 解决思路: 先使用who指令显示出所有已登录的用户。然后对who指令的输出进行切割得到想要的第一列内容,即只包含用户名。可以使用cut指令。最后对cut的结果进行排序并去重。可以使用sort指令。   借助管道符,可以方便的…

    Linux干货 2016-11-13
  • 实验删除分区表

    首先我们先对分区表做个备份 dd if=/dev/sda of=/app/mbr bs=1 count=512 把备份考到另一台设备上,不拷贝的话这台设备开不了机无法使用备份的文件 清除分区表 接下来需要在客户端操作 使用光盘救援模式启动 启用网络 选网卡 自动获取ip后默认下一步 接下来就是把刚刚拷到另一台设备上的文件拷贝回来   注:这是在光盘的根目录下…

    2017-12-05
  • btrfs文件系统及管理

      什么是btrfs? Btrfs(B-tree文件系统,通常念成Butter FS,Better FS或B-tree FS),linux文件系统,具有写时复制COW(copy-on-write),改善ext3文件系统单文件大小限制,并加入其他特性,如可写快照,快照的快照,内建RAID,子卷(subvloume),专注于容错,修复和易于管理。单文件…

    系统运维 2016-05-13
  • 压缩和解压缩总结

                      压缩和解压缩的命令很多,今天总结如下: gzip  压缩比1–9  默认是6  压缩比越高  耗费CPU资源也多,文件比较小的话,不建议使用gzip压缩,因为使用gzip越压缩越大。…

    Linux干货 2017-04-17