shell脚本编程之循环

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: $ ! . * & 等等)

总结 
1. 掌握好三种循环的用法(特别是until和前两种循环对于条件判断是相反的)
2.for循环读取文件时,如果遇到未按照默认分隔符隔开的文件,可以通过修改分隔符来实现正常读取
(但是先备份分隔符的默认值,再进行修改,最后进行还原)
3.掌握字符串的截取方式,可以帮助我们完成截取一些特殊文件的想要的截取结果
4.对echo的特殊用法也要多加以了解,可以高效的输出我们想要的内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值