shell编程之循环语句
一、循环语句
1、for循环基础
在实际工作中,经常会遇到某项任务需要多次执行的情况,而每次执行时仅仅是处理的 对象不一样,其他命令相同。
- for循环语句的语句结构
for 变量名 in 取值列表
do
命令系列
done
或者
for ((i=*;i<=*;1++))
do
命令序列
done
基础小技巧花括号{}和seq在for循环的应用
for i in {1..50..2} 1-50的奇数
for i in {2..50..2} 1-50的偶数
for i in {10..1} 1-10倒序排列
for i in $(seq 10) 1-10正序排列
for i in $(seq 10 -1 1) 1-10倒序排列
for i in $(seq 1 2 10) 1-10的奇数,中间为步长
for i in $(seq 0 2 10) 1-10的偶数,中间为步长
1.实验
1.1将user.txt文本中的用户批量添加并设置密码
1.2算出从1-100的累加值
1.3从ipadds.txt文本中的地址判断出是否能ping通,能ping通的将ip地址输入到/opt/hosts
1.4用for循环输出一个9*9的矩形
1.5用for循环输出一个99乘法表
2、while 语句
2.1 while 语句说明
for循环语句非常适用于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数,操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合适用另一种循环-----while语句
- 适用while循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止,但是脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行
- 循环体内的命令序列中应包括修改测试条件的语句,以便在适当的时候使测试条件不再成立,从而结束循环。
while 循环语句的语法结构如下
while 条件测试操作
do
命令序列
done
执行流程
- 首先判断while后的条件测试操作结果,如果条件成立,则执行do … done 循环体中的命令序列
- 执行完成之后,再进行判断测试条件,如果成立,则继续执行do …done循环体中的命令序列
- 直到进行判断测试条件不成立,然后跳出while循环
2.2实验
2.2.1查找一个目录有多少文件
2.2.2计算机
2.2.3猜数
2.2.4商场购物
3、until语句
跟while相反,条件为假进入循环,条件为真退出循环
语法结构
until 表达式
do
command
done
二、循环控制语句
for循环一般会搭配条件判断语句和流程控制语句一起执行,那么就会出现需要跳过循环和中止循环的情况,控制循环的命令有以下3个
1、continue
解释: 继续,但不会执行循环特内下面的代码,重新下一次循环
2、break
解释: 打断,马上停止本次循环,执行循环体外的代码
3、exit
解释: 接跳出程序,后面可跟状态返回码,如exit1 等等
注意:
如果在执行的脚本中,有exit退出当前程序的命令,如果使用source 进行执行该脚本的话,
那么将会退出终端程序,因为source命令是将脚本内的命令加载到系统环境中执行的,
那再执行exit的同时,也就是将exit命令在终端上进行执行,那么将会退出终端。
三、总结
循环语句有for、while和untile三种不格式的循环语句,前两种的执行效果一样,,用法上存在区别,until使用较少,与前面的语句刚好相反,注意break和continue和exit的使用方式。
- break的使用方式: 跳出当前的循环,
- continue的使用方式: 继续当前循环,此次循环后面将不会再输出,循环继续开始,
- exit的使用方式: 退出当前终端,在执行的脚本的时候,尽量使用路径执行,如果使用source执行的话话,会把内部的变量加载到系统环境执行,那么将会退出终端程序。