前言
前面我们已经学习了shell
的条件测试,回忆一下,有针对文件状态的测试,有针对整数的测试以及字符串的测试,还有逻辑测试,其实条件测试主要就是用在程序的流程控制,今天我们就来学习怎么使用条件测试来控制程序的执行流程。
shell
流程控制
if
语句
单条件 if 语句
基本语法:
if 条件成立(条件测试)
then
做什么事(需要执行的程序)
else
做什么事(需要执行的程序)
fi
其实程序语句很多时候和我们的自然语句很像,比如说if
语句要表达的意思就是如果怎么就怎么样,否怎怎么样,例如,如果(if
) 明天天晴(条件表达式成立
),那么(then
)我就去钓鱼(就做什么事
),否则(else
)我就待在家里看电影(做什么事
)。发现了么,程序语言想要表达的就是和我们自然语言一样的意思,因为程序语言是写给人看的。下面我们把上面的案例翻译成shell
命令。
#!/bin/bash
# if 语句例子
tomorrow=fineDay
if [ $tomorrow = "fineDay" ]
then
echo "我就去钓鱼!"
else
echo "我待在家看电影!"
fi
当然 if
语句也可以没有else
,表示如果满足条件我就做某事,否则什么也不做。
#!/bin/bash
# if 语句例子
tomorrow=fineDay
if [ $tomorrow = "fineDay" ]
then
echo "我就去钓鱼!"
fi
if
语句的语义比较简单,如果怎么就干什么,否则就做别的。相对于简单 if 语句,还有多条件 if
语句,它可以针对多种情况作出不同的选择。
多条件 if 语句
如果理解了上面的简单 if
语句,那么理解这个多条件 if
语句也就没什么难的了,我们直接看一个例子。
#!/bin/bash
echo "请输入成绩:"
read score
if [[ $score -lt 60 ]]; then
echo "该学生成绩不及格!"
elif [[ $score -lt 70 ]]; then
echo "该学生成绩及格!"
elif [[ $score -lt 80 ]]; then
echo "该学生成绩良好!"
elif [[ $score -lt 90 ]]; then
echo "该学生成绩优秀!"
else
echo "学霸驾到!"
fi
if
每次只会选择最多一个分支执行。
case
语句
case
语句能够完成的作用和 if
语句类似,但是二者也有区别,if
语句可以处理 范围类的条件判断,例如 成绩大于60小于等于70,而 case
语句则适合处理有有限范围的条件判断。例如,如果问今天星期几,那么回答一定是星期一到星期日七个值之间的一个。
基本语法:
case 待判断的变量 in
当变量值为这个时)
执行这里的语句
;;
当变量值为这个时)
执行这里的语句
;;
*)
以上条件都不满足时执行这里
;;
esac(case 语句的结束标识符,类似if语句的结束标识符是fi)
看个case
语句的例子
#!/bin/bash
# case 语句
# date 命令会输出日期
# +%w 表示格式化这个日期,输出星期几
week=`date +%w`
case $week in
1)
echo "今天是周一"
;;
2)
echo "今天是周二"
;;
3)
echo "今天是周三"
;;
4)
echo "今天是周四"
;;
5)
echo "今天是周五"
;;
*)
echo "今天周末"
;;
esac
好了,今天的内容就到这里了,通过今天的学习,我们已经可以实现一些简单的shell
程序了。我们下节见!
系列传送门如下:
Shell脚本基础从头开始(一)── 几个linux实操技巧
Shell脚本基础从头开始(二)── 输出重定向
Shell脚本基础从头开始(三)── linux的权限管理
Shell脚本基础从头开始(四)── 第一个shell脚本
Shell脚本基础从头开始(五)── shell的输入输出
Shell脚本基础从头开始(六) ── shell条件测试
Shell脚本基础从头开始(八)── shell的循环语句
Shell脚本基础从头开始(九)── shell的循环语句控制
Shell脚本基础从头开始(十)── shell的文本过滤
Shell脚本基础从头开始(十一)── shell的文本过滤(二)
Shell脚本基础从头开始(十二)── 制作一个字符菜单
Shell脚本基础从头开始(完结篇)── 利用shell编写监控脚本以及shell操作数据库