Linux系列:shell编程之分支与循环
【摘要】 linux系列第十课
1、分支:if与case
Ⅰ if语法的3种形式如下:
① 假如今天天气好,我就打羽毛球,跑步,洗澡。
结果如下:
[hadoop@image shell]$ . if.sh
打羽毛球
跑步
洗澡
② 假如今天天气好,我就打羽毛球,跑步,洗澡;否则,我就呆在家学习。
结果如下:
[hadoop@image shell]$ . if-else.sh
呆在家里学习
③ 成绩<60,不及格;60<=成绩<85,及格;成绩>=85,优秀。
结果如下:
[hadoop@image shell]$ . if-elif-else.sh
及格
④ 下面说一个和python中input函数类似的函数,read -p :等待控制台输入。
结果如下:
[hadoop@image shell]$ . read.sh
请输入您的分数:90
优秀
[hadoop@image shell]$ . read.sh
请输入您的分数:70
及格
[hadoop@image shell]$ . read.sh
请输入您的分数:40
不及格
Ⅱ case语法如下:
case和java中的switch有些相似:匹配是否和某个值相等。
语法和说明如下:
操作如下:
结果如下:
[hadoop@image shell]$ . case.sh start
start your play
[hadoop@image shell]$ . case.sh stop
stop your play
[hadoop@image shell]$ . case.sh stop
stop your play
2、循环:where、for与until
Ⅰ where循环语法如下:
// 这个condition条件的写法,最好采用(())的方式,其余方式感觉没这个好;
// 当满足condition这个条件,才会执行下面的代码;
while condition
do
command
done
例: 利用where循环实现1+2+3+…+100
① 直接把100定死了;
结果如下:
[hadoop@image shell]$ . while.sh
1到100的和为:5050
② 采用传参的方式;
结果如下:
[hadoop@image shell]$ . while.sh 10
1到10的和为:55
[hadoop@image shell]$ . while.sh 50
1到50的和为:1275
[hadoop@image shell]$ . while.sh 100
1到100的和为:5050
③ 控制台输入的方式;
结果如下:
[hadoop@image shell]$ . while.sh
请输入你想输入的数:10
1到10的和为:55
[hadoop@image shell]$ . while.sh
请输入你想输入的数:50
1到50的和为:1275
[hadoop@image shell]$ . while.sh
请输入你想输入的数:100
1到100的和为:5050
Ⅱ for循环语法如下:
【for var in list】有以下3种写法:
for var in 枚举 # 不常用;
for var in {1..100} # 这个也表示从1-100;
for ((i=0;i<=100;i++)) # 注意这种写法,和java中for循环写法类似;
操作如下:
结果如下:
第3种最为常见:
利用for循环,制作九九乘法表:分三步进行讲解。
① 先看看echo中的参数“-e”的作用是什么?
[hadoop@image shell]$ echo "我\n爱\n你"
我\n爱\n你
[hadoop@image shell]$ echo -e "我\n爱\n你"
我
爱
你
// 从上述结果中可以看出:"-e"可以让程序处理"\t \n"等特殊字符。
② 再看看echo中的参数“-n”的作用是什么?
不加“-n”的时候:
加上“-n”的时候
从上面可以看出:"-n"可以让输出结果,不换行打印。
③ 制作九九乘法表
# 代码如下
[root@bigdata111 ~]# cat cacul.sh
#!/bin/bash
for((i=1;i<=9;i++))
do
for ((j=1;j<=i;j++))
do
echo -ne "$i*$j=$[i*j]\t"
done
echo
done
结果如下:
Ⅲ until循环语法如下:
// 一般 while 循环优于 until 循环,在极少数情况下,until循环更加有用。
// 不管怎么样,先执行循环体一次,直到某个条件满足condition,退出循环。
until condition
do
command
done
操作如下:
结果如下:
[hadoop@image shell]$ . until.sh
0 1 2 3 4 5 6 7 8 9 10
补充说明:
break和continue的用法,和java的用法一致。break表示跳出整个循环,continue表示跳出当前循环。
这里用一个形象的例子说明break和continue区别:
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)