1 for循环

语法结构如下:

  1. for 变量名 in123        #值的数量决定循环任务的次数
  2. do
  3. 命令序列
  4. done
1.1 for循环的基本语法格式
#编写脚本,进行测试
[root@localhost opt]# vim for01.sh
#!/bin/bash
for i in a b c
do
        echo "hello world"
done
[root@localhost opt]# bash for01.sh		#输出查看结果
ok
ok
ok

#编写脚本,输出i查看结果
[root@localhost opt]# vim for02.sh
#!/bin/bash
for i in a b c
do
    echo ok
    echo $i
done    
[root@localhost opt]# bash for02.sh		#输出查看结果
ok
a
ok
b
ok
c

#通过循环批量显示10个数字
#!/bin/bash
for i in {1..10}	#{1..10}表示1-10之间的数字
do
    echo $i
done

#如果循环次数是通过变量决定可以用seq指令
#!/bin/bash
a=10
for  i  in  `seq $a`           
do
    echo "$i"
done

#编写脚本,批量创建账户
#!/bin/bash
for i in $(cat  /opt/name.txt)    #循环批量创建name.txt里面所有账户,文档中每行是一个名字,该文档要提前创建,与脚本在同一目录下即可
do
useradd  $i
done

vim /opt/name.txt
zhangsan
lisi
wangwu
zhaoliu
1.2 c语言风格的for循环语法格式
#!/bin/bash
for ((i=1;i<=5;i++))
do
   echo $i
done

通过多重for循环打印九九乘法表

[root@localhost opt]# vim for99.sh
#!/bin/bash
for i in {1..9}
do
    for ((j=1;j<=i;j++))
    do
        printf "%-8s" $j*$i=$((j*i))	#%s是格式替代符,%-8s指一个宽度为8个字符(-表示左对齐,没有则表示右对齐)
    done
    echo
done
[root@localhost opt]# bash for99.sh
1*1=1    
1*2=2   2*2=4    
1*3=3   2*3=6   3*3=9    
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81


2 while循环

while循环属于条件式的执行流程,会反复判断指定的测试条件,只要条件成立即执行固定操作,直到条件不成立为止。

所以while循环的条件一般通过变量来控制,在循环体内对变量做相应改变,以便在适当的时候退出,避免陷入死循环。

使用while循环,语法结构如下所示:

  1. while 条件测试
  2. do
  3. 命令序列
  4. done

while循环基本用法

2.1 有效循环脚本
[root@localhost opt]# vim while03.sh
#!/bin/bash
i=1
while [ $i -le 5 ]			#判断i是否小于等于5
do
        echo "$i"
        let i++
done
2.2 死循环脚本
[root@localhost opt]# vim while01.sh
#!/bin/bash
i=1
while [ $i -le 5 ]				#判断i是否小于等于5
do
        echo "abc"
done
[root@localhost ~]# chmod +x while01.sh		#添加执行权限
[root@localhost ~]# ./while01.sh        #死循环,需要使用Ctrl+C终止脚本


#死循环的另一种格式
#!/bin/bash
while :                                    #冒号可以表示条件为真
do
        echo "abc"
				sleep 0.1                                #每次循环休息0.1秒
done
3 控制循环中断的三种命令

exit:退出整个循环,同时退出整个脚本

[root@localhost opt]# vim while02.sh
#!/bin/bash
for i in {1..5}
do
    [ $i -eq 3 ] && exit		#i=3时退出本次脚本
    echo $i
done
echo ok

[root@localhost opt]# bash while02.sh		#结果看到循环后面的任务没有执行
1
2

break:退出本次循环,继续循环后的任务

[root@localhost opt]# vim while03.sh
#!/bin/bash
for i in {1..5}
do
    [ $i -eq 3 ] && break		#i=3时退出循环
    echo $i
done
echo ok
[root@localhost opt]# bash while03.sh		#结果看到循环后面的任务执行了
1
2
ok

continue:退出本次循环,进行下一次循环

[root@localhost opt]# vim while03.sh
#!/bin/bash
for i in {1..5}
do
    [ $i -eq 3 ] && continue	#i=3 时退出本次循环,进入下次循环
    echo $i
done
echo ok

[root@localhost opt]# bash while03.sh		#看到i=3时的循环任务没有执行
1
2
4
5
ok


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: shell