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

 

posted @ 2022-11-02 15:26  索罗大魔王  阅读(561)  评论(0编辑  收藏  举报