while和unitl循环结构语句
一、循环结构语句
Shell编程中循环命令用于特定条件下决定某些语句重复执行的控制方式,有三种常用的循环语句:for、while和until。while循环和for循环属于“当型循环”,而until属于“直到型循环”。
二、详解while循环
while循环也称为前测试循环语句,重复次数是利用一个条件来控制是否继续重复执行这个语句。为了避免死循环,必须保证循环体中包含循环出口条件即表达式存在退出状态为非0的情况。
计算从1到100所有奇数的和。
sum=0
i=1
while(( i <= 100 ))
dolet "sum+=i"let "i += 2"
done
echo "sum=$sum"
循环控制符break和continue
break:在for、while和until循环中break可强行退出循环,break语句仅能退出当前的循环,如果是两层循环嵌套,则需要在外层循环中使用break。
案例:计算机随机生成一个1到10的随机数,最多由用户猜五次看看能猜中?
#!/bin/bash# 生成随机数
r=$(( $RANDOM%10+1 ))i=0
while [ $i -lt 5 ];do# 获取用户输入数字echo -n "请输入:"read userNumif [ $userNum -gt $r ]; thenecho "太大了,再试一次"elif [ $userNum -lt $r ]; thenecho "太小了,再试一次"elseecho "猜对了,$r"# 猜对了,退出循环breakfilet i++
done
continue:在for、while和until中用于让脚本跳过其后面的语句,执行下一次循环。
案例: continue用于显示100内能被7整除的数。
#!/bin/bashi=0while [ $i -le 100 ];dolet i++r=$((i%7))if [ $r -eq 0 ];thenecho "$i"continueecho "跳出循环,不显示"fi
done
三、详解until循环
until命令和while命令类似,while能实现的脚本until同样也可以实现,但是until与while刚好相反,即whie循环在条件为真时继续执行循环而until则在条件为假时执行循环
until [[ "$i" -gt 5 ]]
dolet "square=i*i"echo "$i * $i = $square"let "i++"
done