我是靠谱客的博主 现实龙猫,这篇文章主要介绍8.shell流程控制(if else-if else判断,for循环,while语句,无限循环,until循环,case匹配,break-continue跳出循环等),现在分享给大家,希望可以做个参考。

1.if else-if else判断

 if else-if else在shell中,格式同Java中还是有点区别的。具体格式是啥也就不说了,直接上demo,一看就知道了

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash a=16 b=15 #1.if-else判断(使用[ ]来实现) if [ ${a} -eq ${b} ] then echo "a等于b" else echo "a不等于b" fi #2.if else-if else判断(使用test来实现) if test ${a} -gt 100 then echo "a大于100" elif test ${a} -le ${b} then echo "a小于等于b" else echo "两个条件都不满足" fi ################################# 区别:1.shell中写法有所变法,是:elif 2.shell中if,if else,if elif else结束时,都必须加fi来确认循环结束(末尾的fi就是if倒过来拼写) 3.写成一行的话,需要加分号;隔开. eg:if [ ${a} -eq ${b} ];then echo "a等于b";else echo "a不等于b";fi

2.for循环

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/bin/bash #4.for循环 city_arr=("Beijing" "Shanghai" "Guangzhou" "Shenzhen" "Taiyuan") for city in ${city_arr[@]} do echo ${city} done #来回顾一下接受参数$*,加引号的区别。参考:https://blog.csdn.net/lzb348110175/article/details/89972807 for str in "$*" do echo ${str} done #来回顾一下接受参数$@,加引号的区别。参考:https://blog.csdn.net/lzb348110175/article/details/89972807 for str in "$@" do echo ${str} done ################################# 注意:1.要使用do,done等关键字 2.一行来写for循环 eg:for city in ${city_arr[@]};do echo ${city};done;

  结果如下:

3.while语句

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash #6.while语句 a=15 while test ${a}<50 do echo ${a} let "a++" done; ####################################### 注意:1.while紧跟的条件需要使用双括号(()),中括号或者双中括号无效 2.也是用到do,done关键字 3.此例中使用了Bash的let命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量 4.let命令,可参考:https://www.runoob.com/linux/linux-comm-let.html

  *****while循环可用于读取键盘信息(read关键字)

   参考:https://www.cnblogs.com/lottu/p/3962921.html

复制代码
1
2
3
4
5
echo -n '输入你最喜欢的网站名: ' while read FILM do echo "是的!$FILM 是一个好网站" done

4.无限循环(3种情形)

复制代码
1
2
3
4
5
#1.while #2.while true #3.for循环 while : while true for (( ; ; )) do do command command done done

5.until循环

    until 循环执行一系列命令直至条件为 true 时停止。

    until 循环与 while 循环在处理方式上刚好相反

    一般 while 循环优于 until 循环,但在某些时候—也只是极少数情况下,until 循环更加有用。

复制代码
1
2
3
4
5
6
7
8
#!/bin/bash #需求:当num<10时,跳出循环 num=15 until test ${num} -lt 10 do echo "我现在是${num},还大于等于10,,还没跳出循环" num=`expr ${num} - 1` #等价于:let num-- done;

6.case匹配

    Shell case语句为多选择语句,其实与①Java中的switch-case语法  ②sql中的case-when语法的使用一致 

    通过实例来瞅一瞅case语法

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#!/bin/bash #需求: # 1.while循环可用于读取键盘信息 # 2.根据输入的信息,然后提示你输入的名字;匹配成功则正常输出,匹配失败,则:提示'你输入了其他名字' # 3.使用while true死循环 # 4.使用case语法做判断 while true echo '---------------------------' echo '请输入你的名字' read name do case ${name} in 'Mary') echo '你输入了Mary' ;; 'Lucy') echo '你输入了Lucy' ;; 'Bob') echo '你输入了Bob' ;; *) echo '你输入了其他名字' ;; esac done #通过实例,来解析case语法的一些规则: ###1.取值后面必须为单词in ###2.每一模式必须以右括号结束 ###3.取值可以为变量或常数 ###4.匹配成功执行,直到遇到;;才会结束 ;;相当于Java中的break; ###5.所有都没有匹配到,使用星号 * 捕获该值.相当于Java中的default; ###6.执行完成,需要通过esac来结束(case的反转,与if需要fi来结束类似)

7.跳出循环

    shell中跳出循环,用到的也是breakcontinue两个关键字,两个关键字的用法与在java中的用法一模一样。

    break:跳出所有循环 

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash #需求:还是上一个例子,当输入名称不是Mary,Lucy,Bob这三个的时候,在*)中通过break跳出循环 while true echo '---------------------------' echo '请输入你的名字' read name do case ${name} in Mary) echo '你输入了Mary' ;; Lucy) echo '你输入了Lucy' ;; Bob) echo '你输入了Bob' ;; *) echo '你输入了其他名字,执行break跳出,当前循环结束' break echo 'break后的语句不会执行' ;; esac done

   结果:

    continue:跳出当前执行的循环

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash while true echo '---------------------------' echo '请输入你的名字' read name do case ${name} in 'Mary') echo '你输入了Mary' ;; 'Lucy') echo '你输入了Lucy' ;; 'Bob') echo '你输入了Bob' ;; *) echo '你输入了其他名字,执行continue,跳出当前循环' continue echo '执行contiune命令后,这条语句不会输出' ;; esac done

结果: 

结果比较:break直接跳出了整个while true循环,break后面的命令 不会执行

                 continue只是跳出了当前的case语句,continue后面的命令也不会执行

 

本文仅用作:学习笔记 

部分参考自:https://www.runoob.com/linux/linux-shell-process-control.html

如有错误,欢迎纠正,谢谢

最后

以上就是现实龙猫最近收集整理的关于8.shell流程控制(if else-if else判断,for循环,while语句,无限循环,until循环,case匹配,break-continue跳出循环等)的全部内容,更多相关8.shell流程控制(if内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(84)

评论列表共有 0 条评论

立即
投稿
返回
顶部