如何在Shell中使用if else语句
如何在Shell中使用if else语句?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
if 语句
最简单的用法就是只使用 if 语句,它的语法格式为:
if conditionthen statement(s)fi
condition是判断条件,如果 condition 成立(返回“真”),那么 then 后边的语句将会被执行;如果 condition 不成立(返回“假”),那么不会执行任何语句。
从本质上讲,if 检测的是命令的退出状态,我们将在下节《Shell退出状态》中深入讲解。
注意,最后必须以fi来闭合,fi 就是 if 倒过来拼写。也正是有了 fi 来结尾,所以即使有多条语句也不需要用{ }包围起来。
如果你喜欢,也可以将 then 和 if 写在一行:
if condition; then statement(s)fi
请注意 condition 后边的分号;,当 if 和 then 位于同一行的时候,这个分号是必须的,否则会有语法错误。
实例1
下面的例子使用 if 语句来比较两个数字的大小:
#!/bin/bashread aread bif (( $a == $b ))then echo "a和b相等"fi
运行结果:
84↙
84↙
a和b相等
在《Shell (()) 》一节中我们讲到,(())是一种数学计算命令,它除了可以进行最基本的加减乘除运算,还可以进行大于、小于、等于等关系运算,以及与、或、非逻辑运算。当 a 和 b 相等时,(( $a == $b ))判断条件成立,进入 if,执行 then 后边的 echo 语句。
实例2
在判断条件中也可以使用逻辑运算符,例如:
#!/bin/bashread ageread iqif (( $age > 18 && $iq < 60 ))then echo "你都成年了,智商怎么还不及格!" echo "来C语言中文网(http://c.biancheng.net/)学习编程吧,能迅速提高你的智商。"fi
运行结果:
20↙
56↙
&&就是逻辑“与”运算符,只有当&&两侧的判断条件都为“真”时,整个判断条件才为“真”。
熟悉其他编程语言的读者请注意,即使 then 后边有多条语句,也不需要用{ }包围起来,因为有 fi 收尾呢。
if else 语句
如果有两个分支,就可以使用 if else 语句,它的格式为:
if conditionthen statement1else statement2fi
如果 condition 成立,那么 then 后边的 statement1 语句将会被执行;否则,执行 else 后边的 statement2 语句。
举个例子:
#!/bin/bashread aread bif (( $a == $b ))then echo "a和b相等"else echo "a和b不相等,输入错误"fi
运行结果:
10↙
20↙
a 和 b 不相等,输入错误
从运行结果可以看出,a 和 b 不相等,判断条件不成立,所以执行了 else 后边的语句。
if elif else 语句
Shell 支持任意数目的分支,当分支比较多时,可以使用 if elif else 结构,它的格式为:
if condition1then statement1elif condition2then statement2elif condition3then statement3……else statementnfi
注意,if 和 elif 后边都得跟着 then。
整条语句的执行逻辑为:
如果 condition1 成立,那么就执行 if 后边的 statement1;如果 condition1 不成立,那么继续执行 elif,判断 condition2。
如果 condition2 成立,那么就执行 statement2;如果 condition2 不成立,那么继续执行后边的 elif,判断 condition3。
如果 condition3 成立,那么就执行 statement3;如果 condition3 不成立,那么继续执行后边的 elif。
如果所有的 if 和 elif 判断都不成立,就进入最后的 else,执行 statementn。
举个例子,输入年龄,输出对应的人生阶段:
#!/bin/bashread ageif (( $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/bashprintf "Input integer number: "read numif ((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:
Input integer number: 4
Thursday运行结果2:
Input integer number: 9
error
看完上述内容,你们掌握如何在Shell中使用if else语句的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341