Linux--shell之while循环+for循环+until循环
概述
脚本执行任务的时候总会遇到需要重复执行的时候,为了节省资源,除了计划任务,我们还可以使用脚本来完成,接下来就是Shell脚本中的三种循环。
for循环
//
for 变量名 in 取值列表
do
命令序列
done;
for 循环格式
1.for i in {1…10} 或者 for i in `seq 10
2. for((i=1;i<=10;i++))或者for((i=1;i<=10;i+=2))
do
echo $i
done
// An highlighted block
var foo = 'bar';
根据IP地址检查主机状态,使用ping命令检测各主机的连通性,创建脚本验证
//
#!!/bin/bash
for i in 192.168.142.{1..254}
do
ping -c 3 -i 0.5 $i &> /dev/null && echo " $i >通了 " || echo " $i 不通 "
done
;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608200038654.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NjY2NjA5NA==,size_16,color_FFFFFF,t_70)
while循环
只要条件成立,就会一直循环下去
//
while 语句结构
while 条件测试操作
do
命令序列
done;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608184913746.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NjY2NjA5NA==,size_16,color_FFFFFF,t_70)
输出1到10的整数
//
#!/bin/bash
i=0
while [ $i -le 10 ]
do
echo $i
let i++
done;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608190121252.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NjY2NjA5NA==,size_16,color_FFFFFF,t_70)
有20个以std开头的用户需要创建,并设立123456为初始密码
//
#!/bin/bash
i=1
while [ $i -le 20 ]
do
useradd stu$i
echo "123456" | passwd --stdin stu$i
i=$[$i +1]
done;
until循环
until命令和while命令类似,while能实现的脚本until同样也可以实现,但区别是until循环的退出状态是不为0,退出状态是为0(与while刚好相反),即whie循环在条件为真时继续执行循环而until则在条件为假时执行循环。
//
#!/bin/bash
a=10
until [ $a -eq 0 ]
do
a=$[ $a -2 ]
echo $a
done
;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210610163516305.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NjY2NjA5NA==,size_16,color_FFFFFF,t_70)
//
i=1
until [[ $i -gt 5 ]]
do
let square=i*i
echo "$i * $i = $square"
let i++
done
;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210610164844615.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NjY2NjA5NA==,size_16,color_FFFFFF,t_70)
循环嵌套
一个循环体内又包含另一个完整的循环结构,在外部循环的每次执行过程中都会触发内部循环,for、while、until可以相互嵌套。
嵌套循环实现九九乘法表
//
#/bin/bash
for ((i=1;i<10;i++))
do
for ((j=1;j<=$i;j++))
do
a=$[$i*$j]
echo -n " $i*$j=$a "
done
echo
done
;
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210610165604708.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81NjY2NjA5NA==,size_16,color_FFFFFF,t_70)