- Unix / Linux 初学者指南
- Unix / Linux - 首页
- Unix / Linux - 什么是 Linux?
- Unix / Linux - 入门
- Unix / Linux - 文件管理
- Unix / Linux - 目录
- Unix / Linux - 文件权限
- Unix / Linux - 环境
- Unix / Linux - 基本实用程序
- Unix / Linux - 管道与过滤器
- Unix / Linux - 进程
- Unix / Linux - 通信
- Unix / Linux - vi 编辑器
- Unix / Linux Shell 编程
- Unix / Linux - Shell 脚本
- Unix / Linux - 什么是 Shell?
- Unix / Linux - 使用变量
- Unix / Linux - 特殊变量
- Unix / Linux - 使用数组
- Unix / Linux - 基本运算符
- Unix / Linux - 决策
- Unix / Linux - Shell 循环
- Unix / Linux - 循环控制
- Unix / Linux - Shell 替换
- Unix / Linux - 引号机制
- Unix / Linux - I/O 重定向
- Unix / Linux - Shell 函数
- Unix / Linux - 手册页帮助
- 高级 Unix / Linux
- Unix / Linux - 标准 I/O 流
- Unix / Linux - 文件链接
- Unix / Linux - 正则表达式
- Unix / Linux - 文件系统基础
- Unix / Linux - 用户管理
- Unix / Linux - 系统性能
- Unix / Linux - 系统日志
- Unix / Linux - 信号和陷阱
Unix / Linux - Shell 循环控制
在本章中,我们将讨论 Unix 中的 shell 循环控制。到目前为止,您已经了解了如何创建循环以及如何使用循环来完成不同的任务。有时您需要停止循环或跳过循环的迭代。
在本章中,我们将学习以下两个用于控制 shell 循环的语句:
break 语句
continue 语句
无限循环
所有循环都有一个有限的生命周期,并且一旦条件为假或为真(取决于循环),它们就会退出。
如果未满足所需的条件,循环可能会永远持续下去。一个永远执行而不会终止的循环会执行无限次。因此,此类循环称为无限循环。
示例
这是一个简单的示例,它使用while循环显示数字 0 到 9:
#!/bin/sh a=10 until [ $a -lt 10 ] do echo $a a=`expr $a + 1` done
此循环将永远持续下去,因为a始终大于或等于 10,并且永远不会小于 10。
break 语句
break语句用于终止整个循环的执行,在完成执行 break 语句之前的所有代码行后。然后它跳到循环结束后的代码。
语法
以下break语句用于退出循环:
break
break 命令也可以用于使用此格式退出嵌套循环:
break n
这里n指定要退出的第nth个封闭循环。
示例
这是一个简单的示例,它显示一旦a变为 5,循环就会终止:
#!/bin/sh a=0 while [ $a -lt 10 ] do echo $a if [ $a -eq 5 ] then break fi a=`expr $a + 1` done
执行后,您将收到以下结果:
0 1 2 3 4 5
这是一个嵌套 for 循环的简单示例。如果var1 等于 2且var2 等于 0,则此脚本将退出两个循环:
#!/bin/sh for var1 in 1 2 3 do for var2 in 0 5 do if [ $var1 -eq 2 -a $var2 -eq 0 ] then break 2 else echo "$var1 $var2" fi done done
执行后,您将收到以下结果。在内部循环中,您有一个带参数 2 的 break 命令。这表示如果满足条件,您应该退出外部循环,并最终也从内部循环退出。
1 0 1 5
continue 语句
continue语句类似于break命令,不同之处在于它会导致当前循环迭代退出,而不是整个循环。
当发生错误但您想尝试执行循环的下一迭代时,此语句很有用。
语法
continue
与 break 语句一样,可以给 continue 命令提供一个整数参数以跳过嵌套循环中的命令。
continue n
这里n指定要从第nth个封闭循环继续执行。
示例
以下循环使用了continue语句,该语句从 continue 语句返回并开始处理下一条语句:
#!/bin/sh NUMS="1 2 3 4 5 6 7" for NUM in $NUMS do Q=`expr $NUM % 2` if [ $Q -eq 0 ] then echo "Number is an even number!!" continue fi echo "Found odd number" done
执行后,您将收到以下结果:
Found odd number Number is an even number!! Found odd number Number is an even number!! Found odd number Number is an even number!! Found odd number