当型和直到型循环语法
1、while 条件句
语法:
while 条件
do
指令...
done
while 循环是 Shell 脚本中最简单的一种循环,当条件满足时,while 重复地执行一组语句,当条件不满足时,就退出 while 循环。
2、until 条件句
语法:
until 条件
do
指令...
done
提示:until 应用场合不多见,了解就好。
范例 1:每隔 2 秒记录一次系统负载情况
方法一:屏幕输出
[root@localhost ~]# cat while-1.sh
#!/bin/sh
while true
do
uptime
sleep 2
done
提示:while true 表示条件永远为真,因此会一直运行,像死循环一样, 但是我们称呼为守护进程。
补充:nohup 用法:后台运行程序。
[root@localhost ~]# nohup ~/while-1-1.sh &
[4] 84194
[root@localhost ~]# nohup: 忽略输入并把输出追加到"nohup.out"
Shell while 循环的用法如下:
while condition
do
statements
done
condition
表示判断条件,statements
表示要执行的语句(可以只有一条,也可以有多条),do
和done
都是 Shell 中的关键字。
while 循环的执行流程为:
- 先对 condition 进行判断,如果该条件成立,就进入循环,执行 while 循环体中的语句,也就是 do 和 done 之间的语句。这样就完成了一次循环。
- 每一次执行到 done 的时候都会重新判断 condition 是否成立,如果成立,就进入下一次循环,继续执行 do 和 done 之间的语句,如果不成立,就结束整个 while 循环,执行 done 后面的其它 Shell 代码。
- 如果一开始 condition 就不成立,那么程序就不会进入循环体,do 和 done 之间的语句就没有执行的机会。
注意,在 while 循环体中必须有相应的语句使得 condition 越来越趋近于“不成立”,只有这样才能最终退出循环,否则 while 就成了死循环,会一直执行下去,永无休止。
while 语句和 if else 语句中的 condition 用法都是一样的,你可以使用 test 或 [] 命令,也可以使用 (()) 或 [[]]
while 循环举例
【实例1】计算从 1 加到 100 的和。
#!/bin/bash
i=1
sum=0
while ((i <= 100))
do
((sum += i))
((i++))
done
echo "The sum is: $sum"
运行结果:
The sum is: 5050
在 while 循环中,只要判断条件成立,循环就会执行。对于这段代码,只要变量 i 的值小于等于 100,循环就会继续。每次循环给变量 sum 加上变量 i 的值,然后再给变量 i 加 1,直到变量 i 的值大于 100,循环才会停止。i++
语句使得 i 的值逐步增大,让判断条件越来越趋近于“不成立”,最终退出循环。