shell脚本学习(十二)——while与until循环

1 while循环

while循环是Shell脚本中最简单的一种循环,当条件满足时,while重复地执行一组语句,当条件不满足时,就退出while循环。

Shell while 循环的语法结构:

while condition
do
	statements
done

这里condition表示判断条件,statements表示要执行的语句(可以只有一条,也可以有多条),do和done都是shell中的关键字。

while 循环的执行流程:
(1)先对condition进行判断,如果该条件成立,就进入循环体,执行 while 循环体中的语句,也就是do和done之间的语句,这样就完成了一次循环。

(2)每一次执行到done的时候都会重新判断condition是否成立,如果成立,就进入下一次循环,继续执行do和done之间的语句,如果不成立,就结束整个while 循环,执行done后面的其他Shell语句。
(3)如果一开始condition就不成立,那么程序就不会进入循环体,do和done之间的语句就没有执行的机会。

注意:
1)在while循环体中必须有相应的语句使得condition越来越趋于“不成立”,只有这样才能最终退出循环,都则while就成了死循环,会一直执行下去,永无休止。
(2)while语句和if else 语句中的condition用法都是一样的,你可以使用test或者[ ]命令,也可以使用(( ))或[[ ]]

示例一:

#!/bin/bash
#计算1到100的和

sum=0
n=1

while ((n<=100))
do
	((sum+=n))
	((n++))
done

echo "The sum is $sum"

在这里插入图片描述
示例二:

在这里插入代码片#!/bin/bash
#计算从m加到n的值

read m
read n
sum=0

while ((m<=n))
do
	((sum+=m))
	((m++))
done

echo "The sum is $sum"

在这里插入图片描述
示例三:实现一个简单加法计算器,用户每行输入一个数字,计算所有数字的和

#!/bin/bash

sum=0
echo "请输入要计算的数字。按下Ctrl+D组合结束读取"

while read n
do
	((sum+=n))
done

echo "The sum is $sum "

在这里插入图片描述
在终端中读取数据可以等价与在文件中读取数据,按下Ctrl+D组合键表示读取到文件流的末尾,此时read就会读取失败,得到一个非0的退出状态,从而导致判断条件不成立,结束循环。

2 until循环

until循环和while循环恰好相反,当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环。
until 的使用场景很少,一般使用 while 即可
Shell until 循环的用法如下:

until condition
do
	statements
done

condition表示判断条件,statements表示要执行的语句(可以只有一条,也可以有多条),do和done都是Shell中的关键字。

until 循环的流程为:
(1)先对condition进行判断,如果该条件不成立,就进入循环体,执行 until循环体中的语句,也就是do和done之间的语句,这样就完成了一次循环。

(2)每一次执行到done的时候都会重新判断condition是否成立,如果不成立,就进入下一次循环,继续执行循环体中的语句,如果成立,就结束整个until循环,执行done后面的其他Shell语句。
(3)如果一开始condition就成立,那么程序就不会进入循环体,do和done之间的语句就没有执行的机会。

示例一:

#!/bin/bash
#计算1到100的和

i=1
sum=0

until ((i>100))
do
	((sum+=i))
	((i++))
done

echo "The sum is $sum"

在这里插入图片描述
示例二:

#!/bin/bash

until [ -z "$1" ] #-z:用来检测一个变量是否含有数据
do
	echo "$@"
	shift
done

在这里插入图片描述
示例三:

#!/bin/bash

val1=1000
until [ $val1 -eq 0 ]
do
	echo $val1
	val1=$[ $val1 - 200 ]
done

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值