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
5echo -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中跳出循环,用到的也是break和continue两个关键字,两个关键字的用法与在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内容请搜索靠谱客的其他文章。
发表评论 取消回复