SHELL 流程控制之循环
一、for循环语句
for循环通常用于遍历
整个对象或者数字列表
1. 带列表的for循环
- 语法
for 临时变量 in 列表
do
statement1
···
statementN
done
- 列表
- 可以直接列出元素;
for i in 1 2 3 4 5 6 - 可以使用大括号;
for i in {1…2} - 可以是执行的结果;
for i in $(seq 10) - 也可以是位置参数变量:$*(整体) $@(个体)
- 可以直接列出元素;
- for循环中可以
嵌套循环
,也可以有 if-else 来进行判断 - 小练习:
计算1-100奇数的合
2. 不带列表的for循环
在某些特殊情况下,for循环的条件列表可以完全省略,称为不带列表的for循环语句。如果没有为for循环提供条件列表,Shell将从命令行获取条件列表,也就是缺省的列表会从脚本传参获取
。
- 语法
for 临时变量
do
statement1
statement2
...
done
- 例:
3. 类c语言风格的for循环语句
- 语法
- 如:for ((i=1;i<11;i++))
intialize:初始化,赋予 i 起始值1
condition:判定条件,i<11 -->每次循环判定条件,条件成立,就执行循环中的语句
operation:操作,每次循环结束之后的操作,一般都是自增或者自减的操作
- 如:for ((i=1;i<11;i++))
for((intialize;condition;operation ))
do
statement1
···
statementN
done
注意
:类c风格的循环,不会自动取下一个元素,所以需要加上自加或自减的操作- 小练习:
打印1-10的奇数【不止使用expr的计算方式】
二、while循环语句
- while循环结构,可以使得用户重复执行一系列的操作,直到某个条件的发生。
- 语法:
- 通常情况下,expression代表一个测试表达式,当expression的值为0时才执行循环体中的语句,每次执行到done时就会重新判断while条件表达式是否成立,当expression的值为非0值时,将退出循环体。
while expression(条件判断)
do
statement1
statement2
...
done
注意
:while循环只做条件判断,没有自加自减等操作- 小练习:
打印1-10奇数:
注意提前定义初始化变量以及变量自加的操作
三、until循环语句
- until语句的作用是将循环体重复执行,直到某个条件成立为止。
- 与while不同的是,
while循环是条件成立一直执行,不成立停止执行;until是不成立一直执行直到条件成立
。 - 语法:
until expression
do
statement1
statement2
...
done
- 小练习:
打印1-10数字
四、select循环语句
- 主要功能是
创建菜单
,在执行带有select循环语句脚本时,输出会按照数字顺序的列表显示一个菜单,并显示提示符(默认是#?),同时等待用户输入数字选择 - 例:
角色人数选择
五、利用break和continue语句控制循环
break
:终止循环continue
:结束本次循环,直接跳到下一次循环- 小练习:
- echo $i 位置不同,结果也不同
六、作业练习
- 嵌套循环实现99乘法表(for和while都可以)
选做:格式对齐,以及使用单层循环99
- 判定一个成绩:
85-100 -> A
70-84 -> B
60-69 -> C
0-59 ->D
程序的边界问题:>100, <0
必须输入的是数字:0-100
- 循环创建用户:用户名为user01-user20