循环
凡是重复执行一段代码, 都可以称之为循环。 循环体中三种专业的话术:遍历、迭代、递归 。
遍历(traversal) - 按规则访问非线性结构中的每一项。 迭代(iterate) - 按顺序访问线性结构中的每一项。 递归(recursion) - 在函数内调用自身, 将复杂情况逐步转化成基本情况。
通常有进入循环的条件和退出循环的条件。 循环次数分为两种:
循环次数事先已知 循环次数事先未知
常见的循环命令:for, while, until。
for
- 读取不同的变量值,用来逐个执行同一组命令。
- 使用场景:一般用于循环次数事先已知的场景。
- 执行机制:遍历。
for 变量名 in 取值列表
do
命令序列
done
三个默认分隔符
环境变量$IFS,是指内部字段分隔符, 默认为三个:空格、制表符 \t、换行符 \n。
实例1:0到100的求和
实例2:九九乘法表
实例3:批量移动数字并后缀改名
for循环读取文件作为循环条件
for 变量 in $( cat 文件的绝对路径 )
do
执行语句
done
while
重复测试某个条件,只要条件成立则反复执行。
使用场景:相对于for需要知道循环次数,当我们只知道停止条件,不知道次数时,就需要使用while。
while 条件测试操作
do
命令序列
done
实例1:1到100的累加
实例2:猜想随机数
until
重复测试某个条件,只要条件不成立则反复执行。
until 条件测试操作
do
命令序列
done
实例1:1到100的累加
退出循环方法
exit:
退出shell脚本。exit执行后,脚本后面所有的语句都不会执行。
break:
- 跳出单层循环,默认为break 1,后面的数字为跳出层数。例如"break 2"为跳出2层循环。
- 循环内break之后的语句都不会执行,但循环外的语句仍然会执行。
continue:
- 终止某次循环的执行,本次循环continue后面的语句不会执行,但不会完全终止整个循环。就是直接跳过满足条件的循环,即满足条件的不执行。
- continue一般用于for循环。在while和until中要慎用,因为如果变量迭代语句放在continue之后,那么迭代不会执行,会造成死循环。