shell脚本循环语句 for, while,until

174 阅读1分钟

for循环

读取不同的变量值,用来逐个执行同一组命令

image.png 结构 for(初始化表达式)

for 变量名 in {list}
do
  command
done

例子 打印句子

image.png

image.png

计算1-100正整数和

#!/bin/bash
sum=0
for i in {1..100}
do
let sum+=i
done
echo sum=$sum

##或者
#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
        sum=$(($sum+$i))
done
echo sum=$sum

while

image-20230103104637112.png while循环一般用于有条件判断的循环 若判断条件为真,则进入循环,当条件为假就跳出循环 for循环需要知道循环次数 只知道停止条件不知道具体次数 ,就需要使用while 直到达到条件

结构

while [   ]
do

done

##while 死循环
while [ 1 -eq 1 ]  //写一个永远为真的表达式
do
command
done

批量建立用户

#!/bin/bash
i=0
while [ "${i}" -le 20 ]
do
useradd stu${i}
echo "123456" |passwd --stdin stu${i} &>/dev/null
if [ $? -eq 0 ]
then
echo "用户 stu${i} 被建立"
else
echo "用户 stu${i} 建立失败"
fi
let i++
done

双重循环及跳出循环

#结束某次循环
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then continue 
fi
echo i=$i
done
#结束一层循环
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then break
fi
echo i=$i
done

until

image.png

结构

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

用法

#!/bin/bash  
  
# 初始化计数器  
counter=0  
  
# until 循环,直到 counter 大于等于 5  
until [ $counter -ge 5 ]  
do  
    echo "当前计数: $counter"  
    # 每次循环,计数器加1  
    counter=$((counter+1))  
done  
  
echo "循环结束,计数达到或超过 5"