shell脚本:循环语句
导图
1.for循环
循环机制:遍历
1.1格式
格式1:for i in { 循环范围 } do 命令; done
格式2:for (( 表达式1; 表达式2; 表达式3 )); do 命令; done
1.2流程图
2.while循环 和 until循环
2.1与for循环比较
while和until需要知道循环次数
2.2while循环(迭代)
while 当命令判断为假时停止
2.2.1格式
while [ 条件测试操作 ] do #do代表循环的开始 判断式/命令序列 done #done代表循环的结束
2.3until
until
当命令判断为真时停止
2.3.1格式
until [ 条件测试操作 ] do 判断式/命令序列 done
3.双重循环
外层循环每执行一次,内层循环都要全部执行完毕后,下一次外层循环才能再执行
#***乘法表脚本***
#!/bin/bash #外层循环i控制行 for ((i=1; i<=9; i++)) do #内层循环j控制列,列数小于等于行数的时候执行for循环 for ((j=1; j<=$i; j++)) do #乘法表的结果为行数代表的值*列数代表的值 let sum=i*j #不换行且使用tab制表符进行分隔 echo -n -e "$j*$i=$sum\t" done #没执行完内层循环就换行输出 echo "" done [root@localhost data]# bash test.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
4.exit、break、continue
4.1 exit
退出shell脚本进程,exit执行后,脚本后面的所有语句都不会执行
[root@localhost data]# vim test.sh #!/bin/bash #外层循环 for ((i=1;i<=3;i++)) do echo "outer 1oop:$i" #内层循环,看作外层循环的一个命令语句 for ((j=1;j<=3;j++)) do echo " inter loop:$j" if [ $j -eq 3 ];then #直接退出脚本 j=3的时候即内层循环执行3次 就直接退出脚本,不会进入下一轮的外层循环 exit fi done done [root@localhost data]# bash test.sh outer 1oop:1 inter loop:1 inter loop:2 inter loop:3
4.2 break
跳出当前循环跳,break 2 跳出两层循环(双层循环),循环内break后面的语句不会执行,但是不会影响循环外面的语句
[root@localhost data]# vim test.sh #!/bin/bash #外层循环 for ((i=1;i<=3;i++)) do echo "outer 1oop:$i" #内层循环,看作外层循环的一个命令语句 for ((j=1;j<=3;j++)) do echo " inter loop:$j" if [ $j -eq 2 ];then #跳出当前循环(单层循环) break fi done done [root@localhost data]# bash test.sh outer 1oop:1 inter loop:1 inter loop:2 outer 1oop:2 inter loop:1 inter loop:2 outer 1oop:3 inter loop:1 inter loop:2
4.3 continue
终止某次循环的执行,但不会完全终止整个循环,while和until循环中使用需要慎重 ,因为如果continue放在变量迭代语句前会造成死循环
[root@localhost data]# vim test.sh #!/bin/bash #外层循环 for ((i=1;i<=3;i++)) do echo "outer 1oop:$i" #内层循环,看作外层循环的一个命令语句 for ((j=1;j<=3;j++)) do if [ $j -eq 2 ];then #结束j=2的循环 继续执行下一次的循环 continue fi echo " inter loop:$j" done done [root@localhost data]# bash test.sh outer 1oop:1 inter loop:1 inter loop:3 outer 1oop:2 inter loop:1 inter loop:3 outer 1oop:3 inter loop:1 inter loop:3
本文作者:索罗大魔王
本文链接:https://www.cnblogs.com/suoluo212/p/16825398.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步