单分支的if语句

if 判断条件:then

条件为真的分支代码

fi

 

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

条件选择if语句_第1张图片

脚本代码

[root@localhostbin]# cat ifsingle.sh

#!/bin/bash

 

if[ `id -u` -eq 0 ]; then

       echo "The current is to use theadministrator account."

fi

执行结果

[root@localhostbin]# ifsingle.sh

Thecurrent is to use the administrator account.



 

双分支的if语句

 

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

 

if 判断条件; then

条件为真的分支代码

else

条件为假的分支代码

fi

 

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

条件选择if语句_第2张图片

脚本代码

[root@localhostbin]# 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@localhostbin]# checkip.sh

Please input ipaddress: 10.1.252.252 

Host is up

[root@localhostbin]# checkip.sh

Please input ipaddress: 10.1.252.22

Host is down



分支的if语句


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语句_第3张图片

脚本代码

[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 verygood!"

elif [ $grade -ge 60 ] && [ $grade -le 84 ]; then

       echo "you grade isgood!"

elif [ $grade -gt 100 ]; then

       echo "error! pleaseinput 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!