shell-循环语句(for.while.until)

174 阅读2分钟

循环

循环含义

将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件

重复运行次数

  • 循环次数事先已知
  • 循环次数事先未知

常见的循环的命令:for, while, until

image.png

for循环

执行机制(遍历): 依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束

for 已知循环次数
for  (变量)   循环次数(取值列表)
do
需要循环的事件
done

###############################################

for (( 表达式1; 表达式2; 表达式3 )); do 命令; done

#################################################
for ((expr1;expr2;expr3))
do
   command
done

-     expr1:定义变量并赋初值
-     expr2:决定是否循环
-     expr3:决定循环变量如何改变,决定循环什么时候退出

image.png

**循环出0到10之间的整数**

法一:
#!/bin/bash
for i in {1..10}
do
echo $i
done

法二:
#!/bin/bash
for i in $(seq 1 10)
do
echo $i
done


**批量创建用户并修改密码**

#!/bin/bash
for user in {1..10}
do
  echo stu${user}|xargs -n1 useradd
  echo "123123"|passwd --stdin stu${user}
done

while循环

while循环特点:

  • 重复测试某个条件,只要条件成立则反复执行
  • 常在不知道范围的时候成立

格式: while 条件测试操作 do 命令序列 done

当命令判断为假时停止

    求和(1-100)
    
    #!/bin/bash
    i=0
    sum=0
    while [ $i -le 100 ]
    do
    let sum+=$i
    let i+=2
    done
    echo $sum



猜数字

#!/bin/bash

pc_num=$[RANDOM%3+1]
count=0
while true
do 
   read -p "请输入一个数字:" user_num
   if [ $user_num -eq $pc_num ]
   then 
      echo "答对啦"
      break
   elif [ $user_num -gt $pc_num ]
   then
      echo "你的数字太大了"
   else
      echo "你的数字太小了"
   fi
   let count++
done
   echo 你输入的次数为:$count

until循环

用法: 重复测试某个条件,只要条件不成立则反复执行

格式:

until 条件测试操作
do
  命令序列
done




求和(1-100)

#!/bin/bash
sum=0
i=0
until [ $i -gt 100 ]
do
 sum=$[sum+i]
 let i++
done
echo "{1..100}的和:$sum"

continue break

break和continue都是用来控制循环结构的,主要是停止循环。

break 有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止。 这时我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句。

continue continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环。 可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环。

continue和break使用方法:

break:

1、语法 break 将用于以下break语句退出循环:

2、break n 这里n指定的第n个封闭的循环退出。

continue:

1、语法 continue 和break语句一样,一个整数参数可以给continue命令跳过嵌套循环的命令。

2、continue n 这里n指定第n个封闭循环 continue 。