首页 > 编程笔记 > Linux笔记 阅读:28

Shell while循环语句的用法(附带实例)

while 循环在 Shell 脚本中是最简单的一种循环。当条件满足时,while 循环会重复执行一组自定义语句;当条件不满足时,就退出整个 while 循环。

while 循环的语法格式如下:
while condition
do
    statements
done
condition 表示判断条件,statements 表示要执行的自定义语句(可以只有一条,也可以有多条),do 和 done 都是固定不变的关键字。

while 循环的具体执行流程如下:
  1. 对判断条件(condition)进行判断,如果条件成立,就进入循环,执行循环体中的语句,也就是 do 和 done 之间的语句。这样就完成了一次循环。
  2. 每一次循环开始的时候都会重新判断 condition 是否成立。如果成立,就进入循环,继续执行 do 和 done 之间的语句;如果不成立,就结束整个 while 循环,执行 done 后面的其他 Shell 代码。
  3. 如果一开始 condition 就不成立,那么就不会进入循环体,do 和 done 之间的语句没有执行的机会。

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

下面通过几个案例带大家深入了解 while 循环。

【实例】使用 while 循环计算从 1 加到 100 的总和。
[root@linux opt]# vim demo41.sh
#!/bin/bash
i=1
sum=0
while ((i <= 100))
do
    ((sum += i))
    ((i++))
done
echo "The sum is: $sum"

[root@linux opt]# bash demo41.sh
The sum is: 5050
在 while 循环中,只要判断条件成立,就会一直执行循环。对于这段代码而言,只要变量 i 的值小于等于 100,循环就会继续。每次循环都会让变量 sum 加上变量 i,再重新将新的结果赋值给变量 sum(sum=$sum+$i),接着变量 i 会加 1,开始新一轮的循环,直到变量 i 的值大于 100 时循环才会停止。自增表达式“i++”会使得i的值逐步增大,使得判断条件越来越趋近于不成立,最终退出循环。

使用 while 循环做一个加法计算器,用户每次输入一个数字,计算所有输入数字的和。
[root@linux opt]# vim demo43.sh
#!/bin/bash

sum=0
echo "请输入您要计算的数字,sum 变量的值超过 1200 将结束读取"
while read n
do
    ((sum += n))
    echo "结果:" $sum
    if (( $sum > 1200 )); then
        break
    fi
done

[root@linux opt]# bash demo43.sh
请输入您要计算的数字,sum 变量的值超过 1200 将结束读取
13
结果:13
41
结果:54
199
结果:253
3443
结果:3696

相关文章