1.循环的定义
循环是指依赖某一个条件的限制,对一串逻辑性代码,进行反复性的操作,直到能够满足预期结果进行
结束循环。如果没有预期结果,不间断执行,我们称之为“死循环” 。与循环有关的三个专业性名词:遍历,迭代,递归
遍历(traversal) - 按规则访问非线性结构中的每一项。
迭代(iterate) - 按顺序访问线性结构中的每一项。
递归(recursion) - 在函数内调用自身, 将复杂情况逐步转化成基本情况。
本文将介绍三种常用的循环,分别为 for ,while和until
2.for循环
读取预设置的不同变量值进行循环执行语句,直到不符合设置的标准后跳出循环。是一种典型的遍历循环
2.1基本用法
语句格式:
实列1:列表打印
需求:打印一份到十份的数字列表
结果
实例2:分类打印
需求:打印一份0-10以内的奇数列
需求二:打印一份0-10以内的偶数列表
实例三:累加求和
需求:求从1加到10的和
2.2读取文件作为循环内容
语句格式:
实例
需求:建立一个用户文件,将用户名存放在此文件中,利用for循环判断该用户是否已经被建立
第一步:
第二步:编写相关的脚本
结果:
2.3多线程运用
linux系统是由c语言编写,具有很多c语言的特性,默认情况下是单线程执行语句命令,但是遇到重复量 较大的循环语句,执行时间过长,我们可以调动多线程(多线程的速度取决硬件cpu的性能)执行,可 以快速得到想要的结果
语句格式:
实列
需求:要求在短暂时间内快速得到192.168.199.0/24 网段中所有主机是否在在线,并且无论是否在线 都将其结果保存在一个文件中,可供浏览
演示结果:
2.4遍历文件之改变分隔符
for循环读取文件是按照分隔符IFS 来读取文件中的数据
IFS(Internal Filed Separator,内部域分隔符)是一个set变量(shell变量),默认是空格、Tab 键、换行符,使用for循环读取值列表时,会根据IFS的值判断列表中值的个数。
缺陷演示
首先写一个for循环遍历文件users.txt(刚才测试的文件),进行遍历展示
然后再文件中插入一些信息数据
测试:
改变对users.txt文件进行一个小变动
再执行脚本测试:
解决缺陷的方案
改变分隔符,让读行方式发生改变(但是一定要先备份,再改变,执行后再恢复分隔符)
结果测试:
IFS被改变,忘记备份的解决方案
万一不小心把IFS值设置错了,也可通过如下赋值方式使其恢复到默认值
IFS=$' \t\n'
2.5 C风格的for循环
initialization 是循环开始前的初始化语句。
condition 是循环继续执行的条件。
update 是每次循环结束后执行的语句。
实列
总结
传统的 for 循环在遍历一组元素时更为方便,而C风格的 for 循环则更适用于数值迭代。
3.while循环
while循环是一种初始只用设置条件的循环语句,再命令执行过程中用变量计数来完成迭代,直到非循 环条件才会跳出循环,也是一种遍历性质的循环
3.1 while的取值循环用法
语句格式:
实例一:打印列表
需要:打印1到10的数字列表
示例二:定义死循环,执行结果为真是才会退出
需求: 创建一个随机数为0-999 ;让用户通过键盘输入进行猜测,猜测错误给予提示并且继续持续让用 户猜测,一直到猜出正确结果才会给予提示并且退出循环,并且计算用户用了多次猜中结果
结果执行:
3.2 while读取文件作为循环条件用法
while不同于for读取文件的是,while必须借助read来进行读取,但是read读文件(每次只能读取一行 内容,如果read识别到了换行符,就结束这一次的读取)
语句格式1:重定向输入读
运用演示:读取user.text文件循环输出内容
语句格式2: 管道传输文件
格式:
运用演示:读取user.text文件循环输出内容
4.until循环
until循环与for,while循环不同的是,until循环是只要条件不符合就会一直循环,直到条件符合后才 会退出循环
语句格式:
运用演示:打印数字1-10
5.知识补充:
1.echo的用法和字符串截取
echo的的常用选项-n:不换行输出-e 输出转义字符
"\"本身还存在一些特殊作用
(1)配合一些普通字符实现一些特殊的效果
转义字符的类型:
(2)可以把一些特殊字符转化为普通字符的含义(eg: $ ! . * & 等等)