shell编程之循环语句

166 阅读2分钟

循环

凡是重复执行一段代码, 都可以称之为循环。 循环体中三种专业的话术:遍历、迭代、递归 。

遍历(traversal) - 按规则访问非线性结构中的每一项。 迭代(iterate) - 按顺序访问线性结构中的每一项。 递归(recursion) - 在函数内调用自身, 将复杂情况逐步转化成基本情况。

通常有进入循环的条件和退出循环的条件。 循环次数分为两种:

循环次数事先已知 循环次数事先未知

常见的循环命令:for, while, until。

for

  • 读取不同的变量值,用来逐个执行同一组命令。
  • 使用场景:一般用于循环次数事先已知的场景。
  • 执行机制:遍历。
 for 变量名 in 取值列表
 do
    命令序列
 done

image.png

三个默认分隔符

环境变量$IFS,是指内部字段分隔符, 默认为三个:空格制表符 \t换行符 \n

实例1:0到100的求和

image.png

实例2:九九乘法表

image.png

image.png

image.png

实例3:批量移动数字并后缀改名

image.png

for循环读取文件作为循环条件

for   变量    in    $(  cat  文件的绝对路径 )
do
执行语句
done

image.png

while

重复测试某个条件,只要条件成立则反复执行。

使用场景:相对于for需要知道循环次数,当我们只知道停止条件,不知道次数时,就需要使用while。

 while  条件测试操作
 do
    命令序列
 done

image.png

实例1:1到100的累加

image.png

实例2:猜想随机数

image.png

until

重复测试某个条件,只要条件不成立则反复执行。

 until 条件测试操作
 do
    命令序列
 done

image.png

实例1:1到100的累加

image.png

退出循环方法

exit:

退出shell脚本。exit执行后,脚本后面所有的语句都不会执行。

break:

  • 跳出单层循环,默认为break 1,后面的数字为跳出层数。例如"break 2"为跳出2层循环。
  • 循环内break之后的语句都不会执行,但循环外的语句仍然会执行。

continue:

  • 终止某次循环的执行,本次循环continue后面的语句不会执行,但不会完全终止整个循环。就是直接跳过满足条件的循环,即满足条件的不执行。
  • continue一般用于for循环。在while和until中要慎用,因为如果变量迭代语句放在continue之后,那么迭代不会执行,会造成死循环。