Shell中的while用法
基本格式
while condition
do
command1
command2
command3
done
while循环的执行流程为:
先对condition进行判断,如果该条件成立,
就进入循环,执行while循环体中的语句这样就完成了一次循环
每次执行到done的时候都会重新判断condition是否成立,
如果成立就进入下一次循环,继续执行do和done之间的语句
如果不成立就结束整个while循环执行done后面的其他shell代码
如果一开始condition就不成立,那么程序就不会进入循环体,
do和done之间的语句就没有执行的机会
注意在while循环体中必须有相应的语句使的condition越来越趋近于不成立
只有这样才能最终退出循环,否则while就成为了死循环,会一直执行下去
While语句好if else语句中到的condition用法都是一样的,你可以使用test或[]命令,
也可以使用(())或[[]]
[root@localhost while]# cat 01.sh
#!/bin/bash
#计算1-100的和
i = 1
sum=0
while (( i <=100))
do
((sum+=i))
((i++))
done
echo “This sum is:$sum”
[root@localhost while]# sh 01.sh
This sum is:5050
[root@localhost while]# cat 02.sh
#!/bin/bash
#计算加到m到n的值
read m
read n
sum=0
while (( m<=n))
do
((sum+=m))
((m++))
done
echo “This sum is:$sum”
[root@localhost while]# sh 02.sh
4
6
This sum is:15
练习:
实现一个简单的加法计算器,用户每行输入一个字计算所有数字的和
(请输入您要计算的数字,按住Ctrl+D组合键结束读取)
#!/bin/bash
sum=0
echo “请输入数字,按住Ctrl+D组合键结束读取”
do
((sum+=n))
done
echo “This sum is:$sum”
#在终端读取数据可以 等于在文件中读取数据,
按住Ctrl+d组合键表示读取到文件流的末尾
此时read就会读取失败,
得到一个非0的退出状态,从而导致判断条件不成立
结束循环