13.while条件循环语句 (4)

        while条件循环语句是一种让脚本根据某些条件来重复执行命令的语句,它的循环结构往往在执行前并不确定最终执行的次数,完全不同于for循环语句中有目标、有范围的使用场景。 while循环语句通过判断条件测试的真假来决定是否继续执行命令,若条件为真就继续执行, 为假就结束循环

         

编写一个用来猜测数值大小的脚本。

        结合使用多分支的if条件测试语句与while条件循环语句,该脚本使用 $RANDOM 变量来调取出一个随机的数值(范围为0~ 32767),然后将这个随机数对1000进行取余操作,在 Bash 中进行算术运算的方式有多种,比如使用 expr 命令、使用 $[ ]$(( )) 等符号。在这里我们使用的是 $(( )) 符号来进行算术运算,再用这个数值与用户通过read命令输入的数值进行比较判断。这个判断语句分为3种情况,分别判断用户输入的数值是等于、大于还是小于使用expr命令取得的数值。

        当while条件循环语句中的条件测试始终为true,因此判断语句 会无限执行下去,直到用户输入的数值等于expr命令取得的数值后,才运行exit 0命令, 终止脚本的执行。

        在脚本中,我们添加了一些交互式的信息,从而使得用户与系统的互动性得以增强。而且每当循环到let TIMES++命令时都会让TIMES变量内的数值加1,用来统计 循环总计执行了多少次。这可以让用户得知在总共猜测了多少次之后,才猜对价格

使用 % 1000 运算符,可以将随机数限制在0到999之间,以便与商品价格的范围相匹配。换句话说,这一操作可以确保生成的随机数在指定的范围内。

[root@localhost ~]# cat number.sh
#!/bin/bash
PRICE=$(( $RANDOM % 1000 )) 
TIMES=0
echo "商品价格为0~999之间,你能猜中吗???"
while true
do
        read -p " 请输入你猜的价格:" INT
        let TIMES++
         if [ $INT -eq $PRICE ] ; then
                echo "恭喜您答对了,实际价格是 $PRICE,总共猜测了 $TIMES次"
                exit
        elif [ $INT -gt $PRICE ] ; then
                echo "太高了!"
        else
                echo "太低了!"
        fi
done

    let 是 Bash 中一个用于执行算术运算的内置命令。它的作用是对变量进行算术运算并更新变量的值。在这个脚本中,let TIMES++ 的作用是将变量 TIMES 的值加1,即记录用户猜测的次数。 

[root@localhost ~]# bash number.sh
商品价格为0~999之间,你能猜中吗???
 请输入你猜的价格:500
太高了!
 请输入你猜的价格:400
太高了!
 请输入你猜的价格:300
太低了!
 请输入你猜的价格:350
太高了!
 请输入你猜的价格:340
太高了!
 请输入你猜的价格:330
太高了!
 请输入你猜的价格:320
太高了!
 请输入你猜的价格:310
太低了!
 请输入你猜的价格:311
太低了!
 请输入你猜的价格:312
太低了!
 请输入你猜的价格:313
太低了!
 请输入你猜的价格:314
太低了!
 请输入你猜的价格:315
太低了!
 请输入你猜的价格:316
太低了!
 请输入你猜的价格:317
恭喜您答对了,实际价格是 317,总共猜测了 15次

当条件为true(真)的时候,while语句会一直循环下去,只有碰到exit才会结束

你可能感兴趣的:(#,RHCE,Linux,redhat,RHCE,服务器)