Shell流程控制---while循环语句
2021年4月9日
while 循环介绍
while 在 shell 中也是负责循环的语句,和 for 一样。因为功能一样,很多人在学习和工作中的脚本遇到循环,到底该使用 for 还是 while 呢?很多人不知道,就造就了有人一遇到循环就是 for 或者一味的 while。我觉得可以按照循环次数的情况来使用,如果已经知道循环次数,那么就建议使用 for,比如说一天需要循环 24 次;如果不知道要循环多少次,那么就使用 while,比如我们作业中要求写的猜数字,每个人猜对一个数字的次数都是不能固定的,也就是未知的。所以这样的循环我就建议大家用 while 了。
while 循环语法
语法格式
while [ condition ];do
commands
done
注意:条件为真,while 才会循环;条件为假,while 停止循环
条件可以是之前学习的五种运算:数学比较、字符串比较、文件类型、逻辑运算、赋值运算
小作业试写 while 循环输出 1-9,当输出到5的时候,停止循环。(break) while 循环输出 1-9,当输出5的时候,跳过本次循环。(continue) while 循环输出 1-9,每隔 1 秒输出一个数字。(sleep) while 循环嵌套 for 循环,或者 for 循环嵌套while循环(九九乘法表) while 循环输出 1-10 嵌套 if 判断(奇偶数判断)
补充:如果把某一段代码注释,不用每一行前面都加上#,可以利用定义函数方法来注释
name(){
commands
}
运行脚本,上面花括号{ }内的代码将不会执行。
while 实战
使用 while 遍历文件内容(grep
过滤)
[root@localhost ~ ]# vim while_read.sh
#!/bin/bash
cat /etc/passwd | grep "bash" | while read i;do
echo $i
done
[root@localhost ~ ]# bash while_read.sh
root:x:0:0:root:/root:/bin/bash
karin:x:1000:1000:karin,,,:/home/karin:/bin/bash
[root@localhost ~ ]#
九九乘法表(嵌套)
[root@localhost ~ ]# vim 99.sh
#!/bin/bash
n=1
while [ $n -lt 10 ];do
for ((m=1;m<=$n;m++));do
echo -n -e "$m*$n=$((n*m))\t"
done
echo
n=$((n+1))
done
[root@linux ~ ]# bash 99.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=4
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
[root@localhost ~ ]#