For循环语句非常适用于列表对象无规律,且列表来源已固定(如某个列表文件)的场合。而对于要求控制循环次数、操作对象按数字顺序编号、按特定条件执行重复操作等情况,则更适合适用while循环语句。

While语句的结构

使用while循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不再满足时为止。在脚本应用中,应该避免出现死循环的情况,否则后边的命令操作将无法执行。因此循环体内的命令序列中应该包含修改测试条件的语句。以便在适当的时候使测试条件不再成立,从而结束循环。

while    条件测试操作

do

命令序列

done

while语句的执行流程:首先判断while后的条件测试操作结果,如果条件成立,则执行do。。。done循环体中的命令序列;返回while后再次判断条件测试结果,如果条件依然成立,则继续执行循环体;再次返回后到while后,再次判断。。。。如此循环。直到while后的条件测试结果不在成立为止。最后跳至done语句,表示结束循环。

使用while循环语句时,有两个特殊的条件测试操作,即true(真)和false(假)。使用true作为条件时,表示条件永远成立,循环体内的命令序列将无限执行下去,除非强制终止脚本。反之,若使用false作为条件,则循环体将不会被执行。

android do while循环语句 while循环使用_i++

事例1:

批量添加规律编号的用户:添加包含固定的前缀字串,并按照顺序依次进行编号的账号。(名称依次为stu1。。。。。stu10)。

# vi while1.sh
#!/bin/bash
prefix='stu'
i=1
while [ $i -le 10 ]
do
        useradd ${prefix}$i
        echo "123" | passwd --stdin ${prefix}$i &> /dev/null
        let i++
done
~

android do while循环语句 while循环使用_while循环_02

解释:上述脚本中,使用变量i来控制用户名称的编号,初始赋值为1,并且当取值大于10时终止循环。在循环体内部,通过语句“let  i++”(等同于i=‘expr $i + 1’)来使变量i的值增加1,因此当执行第1次循环后i的值将变为2,。。。。。依次类推。

练习:使用while循环语句删除上面脚本中新建的用户。

事例2:

猜价格:由脚本随机生成一个价格数目(0~999)作为实际价格,判断用户猜测的价格是否高出或低于实际价格,给出相应的提示后再次要求用户猜测;一直到用户猜测到实际价格为止,输出用户的猜测次数和实际价格。

# vi cai.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品实际价格范围为0~999,猜猜是多少?"
while true
do
        read -p "请输入你的猜测价格数目:" INT
        let  TIMES++
        if [ $INT -eq $PRICE ]; then
        echo "恭喜你,猜对了,实际价格是$PRICE"
        echo "你总共猜测了$TIMES次"
        exit 0
        elif [ $INT -gt $PRICE ]; then
        echo "太高了"
        else
        echo “太低了”
        fi
done

android do while循环语句 while循环使用_i++_03

解释:通过环境变量RANDOM可获得一个2的16次方的随机整数,计算其与1000的余数即可获得0~999的随机价格;反复猜测操作使用true作为测试条件的while循环实现,当用户实际价格猜对时终止循环;判断猜测价格使用if语句实现,嵌套在while循环体内;使用变量来记录猜测次数。