while语法结构

当条件满足时,while 重复地执行一组语句,当条件不满足时,就退出 while 循环。

  • while 语法
while CONDITION; do 
循环体
done

CONDITION表示判断条件,循环体表示要执行的语句(可以只有一条,也可以有多条)。

  • while 循环的执行流程为:
    先对 CONDITION进行判断,如果该条件成立,就进入循环,执行 while 循环体中的语句,这样就完成了一次循环。每一次执行到 done 的时候都会重新判断 条件是否成立,如果成立,就进入下一次循环,继续执行 do 和 done 之间的语句,如果不成立,就结束整个 while 循环,执行 done 后面的其它 Shell 代码。

  • 无限循环
    注意,在 while 循环体中必须有相应的语句使得 condition 越来越趋近于“不成立”,只有这样才能最终退出循环,否则 while 就成了死循环,会一直执行下去,永无休止。

无限循环
while true; do 
循环体
done

while示例

  • 计算从 1 加到 100 的和。
#!/bin/bash
i=1
sum=0
while ((i <= 100))
do
    ((sum += i))  //也可以这样写let sum+=i
    ((i++))		//let ++i  
done
echo "The sum is: $sum"
[root@zaishu ~]# ./while01.sh 
the sum is :4950
  • 计算从m到n的值
    对上面的例子进行改进,计算从 m 加到 n 的值。
#!/bin/bash
read m
read n
sum=0
while ((m <= n))
do
    ((sum += m))
    ((m++))
done
echo "The sum is: $sum"
[root@zaishu ~]# ./while01.sh 
10
20
The sum is: 165
  • 加法计算器
#!/bin/bash
sum=0
echo "请输入您要计算的数字,按 Ctrl+D 组合键结束读取"
while read n
do
    ((sum += n))
done
echo "The sum is: $sum"
[root@zaishu ~]# ./calc01.sh 
请输入您要计算的数字,按 Ctrl+D 组合键结束读取
10
20
30
90
80
The sum is: 230
  • while 读取文件

结合管道输入读取文件的内容
打印出使用bash的用户名和bash. 可参照之前的read命令讲解