shell流程控制-for循环语句
- for循环介绍
- for语法
- 循环控制
脚本在执行任务的时候,总会遇到需要循环执行的时候,比如说我们需要脚本每隔五分钟执行一次ping的操作,除了计划任务,我们还可以使用脚本来完成,那么我们就用到了循环语句。
循环的优点
- 1)节省内存 10M脚本 1M脚本 哪个更剩内存 完成同一个任务
- 2)结构更清晰
- 3)节省开发时间成本
一、for 循环介绍
很多人把for循环叫做条件循环,或者for i in 。其实前者说的就是for的特性,for循环的次数和给予的条件是成正比的,也就是你给5个条件,那么
他就循环5次;后者说的是for的语法。
二、for语法
2.1)for 语法一
for var in value1 value2 ......
do
commands
done
image
代码执行结果:
1
2
3
4
5
6
7
8
9
2.2)for语法二
C式的for命令
for ((变量;条件;自增减运算 ))
do
代码块
done
image
代码执行结果
1
2
3
4
5
6
7
8
9
for循环使用多个变量[图片上传中...(image-4cbc3b-1570900792716-8)] 代码执行结果
imagefor 无限循环 使用((;;)) 条件可以实现无线循环
image三、循环控制语句
3.1)sleep N 脚本执行到该步休眠N秒
image 代码执行 image3.2)continue 跳过循环中的某次循环
看段代码吧,默认循环输出1-9,但是使用continue跳过输出5[图片上传中...(image-d226c4-1570900792716-3)] 输出结果
image3.3)break 跳出循环继续执行后续代码
image imagebreak N 跳出某个循环,用在嵌套循环环境,从内循环到外循环依次编号为1-N
[root@front_251 shell_09]# cat for_break_N.sh
#!/bin/bash
#Description:
#Author: Bai Shuming
#Created Time: 2019/05/17 05:23
#脚本分三步执行
#1.没有break 那么脚本i=1的时候 内循环将无限循环,满屏幕haha
#2.内循环加break 终止内循环 内循环只执行一次 输出就会loop 1 haha loop2 haha ....
#3.内循环加break 2 终止外循环 输出loop 1 haha 脚本运行结束
for (( i=1; i<100; i++ ))
do
echo "#loop $i"
for ((;;))
do
echo "haha"
break 2
done
sleep 3
done
代码:
[root@baism shell]# cat for-1.sh
#!/bin/bash
#Author: Bai Shuming
#Created Time: 2018/08/28 11:50
#Script Description:
for i in seq 1 9
do
echo $i
done
[root@baism shell]# cat for-2.sh
!/bin/bash
Author: Bai Shuming
Created Time: 2018/08/28 12:02
Script Description:
for ((i=1;i<10;i++))
do
echo $i
done
[root@baism shell]# cat for-3.sh
!/bin/bash
Author: Bai Shuming
Created Time: 2018/08/28 12:06
Script Description:
for (( a=0,b=9;a<10;a++,b-- ))
do
echo $a $b
done
[root@baism shell]# cat for-4.sh
!/bin/bash
Author: Bai Shuming
Created Time: 2018/08/28 12:15
Script Description:
for ((;;))
do
echo "hehe"
done
[root@baism shell]# cat sleep.sh
!/bin/bash
Author: Bai Shuming
Created Time: 2018/08/28 15:34
Script Description:
echo -n "倒计时: "
for i in seq 9 -1 1
do
echo -n -e "\b$i"
sleep 1
done
echo
[root@baism shell]# cat continue.sh
!/bin/bash
Author: Bai Shuming
Created Time: 2018/08/28 15:47
Script Description:
for ((i=1;i<10;i++))
do
if [ i
fi
done
[root@baism shell]# cat break.sh
!/bin/bash
Author: Bai Shuming
Created Time: 2018/08/28 15:57
Script Description:
for i in seq 1 9
do
echo i -eq 5 ]
then
break
fi
done
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乘法表
网友评论