Linux系列:shell编程之分支与循环

举报
数据分析与统计学之美 发表于 2021/09/27 21:00:19 2021/09/27
【摘要】 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 
1100的和为:5050
② 采用传参的方式;

在这里插入图片描述
结果如下:

[hadoop@image shell]$ . while.sh 10
110的和为:55
[hadoop@image shell]$ . while.sh 50
150的和为:1275
[hadoop@image shell]$ . while.sh 100
1100的和为:5050
③ 控制台输入的方式;

在这里插入图片描述
结果如下:

[hadoop@image shell]$ . while.sh 
请输入你想输入的数:10
110的和为:55
[hadoop@image shell]$ . while.sh 
请输入你想输入的数:50
150的和为:1275
[hadoop@image shell]$ . while.sh 
请输入你想输入的数:100
1100的和为:5050

Ⅱ for循环语法如下:

在这里插入图片描述

【for var in list】有以下3种写法:
for var in 枚举         # 不常用;
for var in {1..100}     # 这个也表示从1-100for ((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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。