详解Shell if else语句的具体使用方法
和其它编程语言类似,Shell也支持选择结构,并且有两种形式,分别是ifelse语句和casein语句。本节我们先介绍ifelse语句,casein语句将会在《Shellcasein》中介绍。
如果你已经熟悉了C语言、Java、JavaScript等其它编程语言,那么你可能会觉得Shell中的ifelse语句有点奇怪。
if语句
最简单的用法就是只使用if语句,它的语法格式为:
ifcondition then statement(s) fi
condition是判断条件,如果condition成立(返回“真”),那么then后边的语句将会被执行;如果condition不成立(返回“假”),那么不会执行任何语句。
从本质上讲,if检测的是命令的退出状态,我们将在下节《Shell退出状态》中深入讲解。
注意,最后必须以fi来闭合,fi就是if倒过来拼写。也正是有了fi来结尾,所以即使有多条语句也不需要用{}包围起来。
如果你喜欢,也可以将then和if写在一行:
ifcondition;then statement(s) fi
请注意condition后边的分号;,当if和then位于同一行的时候,这个分号是必须的,否则会有语法错误。
实例1
下面的例子使用if语句来比较两个数字的大小:
#!/bin/bash reada readb if(($a==$b)) then echo"a和b相等" fi
运行结果:
84↙
84↙
a和b相等
在《Shell(())》一节中我们讲到,(())是一种数学计算命令,它除了可以进行最基本的加减乘除运算,还可以进行大于、小于、等于等关系运算,以及与、或、非逻辑运算。当a和b相等时,(($a==$b))判断条件成立,进入if,执行then后边的echo语句。
实例2
在判断条件中也可以使用逻辑运算符,例如:
#!/bin/bash readage readiq if(($age>18&&$iq<60)) then echo"你都成年了,智商怎么还不及格!" echo"来C语言中文网(http://c.biancheng.net/)学习编程吧,能迅速提高你的智商。" fi
运行结果:
20↙
56↙
&&就是逻辑“与”运算符,只有当&&两侧的判断条件都为“真”时,整个判断条件才为“真”。
熟悉其他编程语言的读者请注意,即使then后边有多条语句,也不需要用{}包围起来,因为有fi收尾呢。
ifelse语句
如果有两个分支,就可以使用ifelse语句,它的格式为:
ifcondition then statement1 else statement2 fi
如果condition成立,那么then后边的statement1语句将会被执行;否则,执行else后边的statement2语句。
举个例子:
#!/bin/bash reada readb if(($a==$b)) then echo"a和b相等" else echo"a和b不相等,输入错误" fi
运行结果:
10↙
20↙
a和b不相等,输入错误
从运行结果可以看出,a和b不相等,判断条件不成立,所以执行了else后边的语句。
ifelifelse语句
Shell支持任意数目的分支,当分支比较多时,可以使用ifelifelse结构,它的格式为:
ifcondition1 then statement1 elifcondition2 then statement2 elifcondition3 then statement3 …… else statementn fi
注意,if和elif后边都得跟着then。
整条语句的执行逻辑为:
- 如果condition1成立,那么就执行if后边的statement1;如果condition1不成立,那么继续执行elif,判断condition2。
- 如果condition2成立,那么就执行statement2;如果condition2不成立,那么继续执行后边的elif,判断condition3。
- 如果condition3成立,那么就执行statement3;如果condition3不成立,那么继续执行后边的elif。
- 如果所有的if和elif判断都不成立,就进入最后的else,执行statementn。
举个例子,输入年龄,输出对应的人生阶段:
#!/bin/bash readage if(($age<=2));then echo"婴儿" elif(($age>=3&&$age<=8));then echo"幼儿" elif(($age>=9&&$age<=17));then echo"少年" elif(($age>=18&&$age<=25));then echo"成年" elif(($age>=26&&$age<=40));then echo"青年" elif(($age>=41&&$age<=60));then echo"中年" else echo"老年" fi
运行结果1:
19
成年运行结果2:
100
老年
再举一个例子,输入一个整数,输出该整数对应的星期几的英文表示:
#!/bin/bash printf"Inputintegernumber:" readnum if((num==1));then echo"Monday" elif((num==2));then echo"Tuesday" elif((num==3));then echo"Wednesday" elif((num==4));then echo"Thursday" elif((num==5));then echo"Friday" elif((num==6));then echo"Saturday" elif((num==7));then echo"Sunday" else echo"error" fi
运行结果1:
Inputintegernumber:4
Thursday运行结果2:
Inputintegernumber:9
error
到此这篇关于详解Shellifelse语句的具体使用方法的文章就介绍到这了,更多相关Shellifelse语句内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!