> For the complete documentation index, see [llms.txt](https://beret81.gitbook.io/study-notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://beret81.gitbook.io/study-notes/shell-jiao-ben/shell-liu-cheng-kong-zhi-for-xun-huan-yu-ju.md).

# shell流程控制-for循环语句

脚本在执行任务的时候，总会遇到需要循环执行的时候，比如说我们需要脚本每隔五分钟执行一次ping的操作，除了计划任务，我们还可以使用脚本来完成，那么我们就用到了循环语句。

### 一、for 循环介绍

```
很多人把for循环叫做条件循环，或者for i in 。其实前者说的就是for的特性，for循环的次数和给予的条件是成正比的，也就是你给5个条件，那么
他就循环5次；后者说的是for的语法。
```

### 二、for语法

#### 2.1）for 语法一

```
for var in value1 value2 ......
    do
        commands
done
```

接下来看段代码吧，循环输出1-9数字

![](https://book.apeland.cn/media/images/2019/05/09/for-1.png)

代码执行结果

for循环使用多个变量

![](https://book.apeland.cn/media/images/2019/05/09/for-3.png)

代码执行结果

![](https://book.apeland.cn/media/images/2019/05/09/for-3-result.png)

for 无限循环 使用((;;)) 条件可以实现无线循环

看看代码吧,编写一个倒计时脚本。

![](https://book.apeland.cn/media/images/2019/05/09/for-4_RKIEqfS.png)

### 三、循环控制语句

#### 3.1）sleep N 脚本执行到该步休眠N秒

看段代码吧

![](https://book.apeland.cn/media/images/2019/05/09/sleep.png)

代码执行

![](https://book.apeland.cn/media/images/2019/05/09/sleep.gif)

#### 3.2）continue 跳过循环中的某次循环

看段代码吧，默认循环输出1-9，但是使用continue跳过输出5

![](https://book.apeland.cn/media/images/2019/05/09/continue.png)

输出结果

![](https://book.apeland.cn/media/images/2019/05/09/continue-result.png)

#### 3.3）break 跳出循环继续执行后续代码

看段代码，默认循环输出1-9，当输出到5的时候跳出循环

![](https://book.apeland.cn/media/images/2019/05/09/break.png)

执行代码

![](https://book.apeland.cn/media/images/2019/05/09/break-result.png)

### job

1.扫描一下你的网段中的那些机器是存活的。

2.手动写一个同步拉脚本，要求B机器每隔10分钟把A机器的/opt/cache/下的内容拉取到B机器的/opt/cache，并做完整性验证

3.新建user01-user20用户，要求密码是随机6位数 密码取值范围a-zA-Z0-9，要求密码不能只是单一的数字或小写或大写字母。

4.写一个mysql分库备份脚本

5.写一个猜数字脚本，数字范围是1-100，定制计数器，每次猜完都要告诉用户猜大或猜小了，如果猜对了跳出脚本并输出计数器的值

6.为DNS写一个自动判断WEB解析的脚本

公司DNS将域名www\.ayitula.com解析到了两个WEB服务器，以实现dns负载均衡。但是当某个WEB服务器出现故障，那么DNS依然会将用户解析到宕机WEB，造成不能正常访问。故要求写一个运行在DNS的检查脚本，当发现哪台WEB宕机后，自己修改DNS的解析记录，关闭对其的解析。当WEB恢复，DNS在打开对其的解析，恢复解析。

7.写一个99乘法表
