shell编程之循环语句 for

1 什么是循环

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

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

通常有进入循环的条件和退出循环的条件。

循环次数分为两种:

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

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

2 for循环语句

用法:

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

格式:

 for 变量名 in 取值列表

 do  

  命令序列  done

执行机制:
1.依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束。
 2.如果省略 [in WORDS ... ] ,此时使用位置参数变量 in "$@"

2.1 for语句的作用演示

1、打印1到10的三种方法:

 

 

 

 

 

 2、打印1到10之间的奇数:

 

 3、打印1到10之间的偶数:

2.2 for循环应用示例

示例1:求从1加到10的和。

创建脚本:

 

 

示例2:批量添加用户

要求:

  1. 用户名存放在users.txt文件中,每行一个
  2. 初始密码均设为123456

创建脚本:

 

 

 

 

示例3:根据IP地址检查主机状态

要求:

  1. IP地址存放在ips.txt文件中,每行一个
  2. 使用ping命令检测各主机的连通性

创建脚本:

 

 

 

 

3 多线程执行脚本(并行执行)

普通for循环是串行,一个一个执行。

在do和done中间增加 { } 符号,可以多线程同时执行。

多线程案例演示:

  • ping 192.168.72.0/24网段内的所有主机。

4 for的三个默认分隔符

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

使用set命令查看所有变量:

4.1 分隔符的作用演示:

示例:使用for读取文件内容,文件中有空格

演示:

文件中只有3行内容,使用for语句读取却显示为5行。

 

 

 

 

原因:

变量IFS定义的分隔符中有空格,for从文件中获取变量值时,以空格作为了分隔符,将"zhang san"分隔成了两行,"wang wu"也是如此。

解决方法:

在脚本中,先临时将变量IFS的值中的空格删除,使for语句不以空格作为分隔符,最后还原变量值。

 

 

 

 

 
 
 
 
 
 
 
 
posted @ 2022-10-30 16:32  原味苦茶  阅读(2281)  评论(0编辑  收藏  举报