循环介绍
循环:一种控制流程的结构,用于重复执行一段代码。是计算机编程中非常重要的一种结构,其目的是为了简化代码编写,提高代码的重复利用率,以及提高程序的效率。
遍历:一种数据操作的过程,用于访问并处理数据结构中的每个元素。在某些情况下,循环和遍历可以结合使用,以便在循环中遍历数据结构并对其进行操作。
循环的优点:
重复执行代码:通过使用循环,可以在程序中重复执行一段代码,从而避免代码的重复编写,减少程序代码量,提高程序的可读性和可维护性。
简化程序逻辑:使用循环可以使程序逻辑更加简洁明了,提高程序的可读性和可理解性,降低代码出错的可能性。
提高代码的重复利用率:通过将重复发代码封装在循环结构中,可以提高代码的重复利用率,减少代码冗余。
提高程序的效率:循环可以让程序自动化地执行重复任务,从而减少人工干预的次数,提高程序的效率和性能。
for语句结构
for 变量名称(注意是名称不是变量$等) [ in 名称范围 ] (可以不写)
do
执行内容 ###若满足循环则做什么动作
done ###for循环结束标志
for ((i=0;i<=5;i++)) #类c语言格式
for i in {1..5} #一般格式
for ((;;)) #死循环格式
for循环流程
读取不同的变量值,用来逐个执行同一组命令
①批量添加用户
Ⅰ.用户名存放在user.txt文件中,每行一个
Ⅱ.初始密码均设为123456
Ⅲ.验证脚本
#!/bin/bash
for i in $(cat /home/user.txt )
do
useradd $i
echo "123456" | passwd --stdin $i
done
②根据IP地址检查主机状态
Ⅰ.IP地址存放在ip.txt文件中,每行一个
Ⅱ.使用ping命令检测个主机的连通性
vim yonghu.sh
for i in $(cat /opt/ip.txt) #变量 i 参数来自 ip.txt 文件
do
ping -c3 -W2 $i &> /dev/null #指定ping三次,超时连接两次后退出。
if [ $? = 0 ]
then
echo "$i" >> /opt/host.txt #将变量i 重定向写入 host.txt 文件
echo "$i连接成功"
else
echo "$i连接失败"
fi
done
常用的转义字符
echo -n 表示不换行输出
echo -e输出转义字符,将转义后的内容输出到屏幕上
###只有加了-e才能执行转义符
跳出循环
表示满足continue条件时跳出循环,但是不影响后续循环执行,它的作用是在循环内部跳过本次循环并继续下一次循环
continue 2 是一个 Shell 中的控制结构,它的作用是在循环内部跳过本次循环并继续下一次循环,而且会跳过两层循环,即在两层循环内部执行
在嵌套循环中,如果我们使用 continue 2 命令,它将跳过包含它的内层循环和外层循环的迭代,并继续执行下一次外层循环的迭代
#!/bin/bash
for j in {1..3}
do
for i in {1..5} #for循环5次从1到5
do
if [ $i -eq 2 ] #if判断语句,若$i=3则执行then的内容
then
continue #结束if语句
fi
echo "$i" #每执行一次就输出一次$i
done
done
打破循环
在某个循环中遇到break直接结束此次循环,但是不影响外边嵌套的循环
break [数字] 结束数字中的几次循环,若为2则结束自己所在循环和外边嵌套的一层循环,
若为3则结束自己所在循环和外边嵌套的2层循环
break 命令并不控制循环次数,它是用于控制循环流程的
当 break 命令执行时,它会立即跳出当前的循环并继续执行循环后面的代码
while循环语句
while循环满足条件执行,不满足不执行
用于不知道循环次数,需要主动结束循环或达到条件结束循环
while [判断条件]
do
执行动作 while循环执行动作
done while循环结束标志while true 死循环
实验:创建用户
实验二: 猜数字
untli循环语句
until循环通常用于当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环,
比如等待某个进程退出、等待某个文件被创建等等
格式:
until [条件测试操作]
do
判断式/命令序列
done