W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
while條件循環(huán)語(yǔ)句是一種讓腳本根據(jù)某些條件來(lái)重復(fù)執(zhí)行命令的語(yǔ)句,它的循環(huán)結(jié)構(gòu)往往在執(zhí)行前并不確定最終執(zhí)行的次數(shù),完全不同于for循環(huán)語(yǔ)句中有目標(biāo)、有范圍的使用場(chǎng)景。while循環(huán)語(yǔ)句通過(guò)判斷條件測(cè)試的真假來(lái)決定是否繼續(xù)執(zhí)行命令,若條件為真就繼續(xù)執(zhí)行,為假就結(jié)束循環(huán)。while語(yǔ)句的語(yǔ)法格式如圖4-21所示。
圖4-21 while循環(huán)語(yǔ)句的語(yǔ)法格式
接下來(lái)結(jié)合使用多分支的if條件測(cè)試語(yǔ)句與while條件循環(huán)語(yǔ)句,編寫一個(gè)用來(lái)猜測(cè)數(shù)值大小的腳本Guess.sh。該腳本使用$RANDOM變量來(lái)調(diào)取出一個(gè)隨機(jī)的數(shù)值(范圍為0~32767),將這個(gè)隨機(jī)數(shù)對(duì)1000進(jìn)行取余操作,并使用expr命令取得其結(jié)果,再用這個(gè)數(shù)值與用戶通過(guò)read命令輸入的數(shù)值進(jìn)行比較判斷。這個(gè)判斷語(yǔ)句分為三種情況,分別是判斷用戶輸入的數(shù)值是等于、大于還是小于使用expr命令取得的數(shù)值。當(dāng)前,現(xiàn)在這些內(nèi)容不是重點(diǎn),我們當(dāng)前要關(guān)注的是while條件循環(huán)語(yǔ)句中的條件測(cè)試始終為true,因此判斷語(yǔ)句會(huì)無(wú)限執(zhí)行下去,直到用戶輸入的數(shù)值等于expr命令取得的數(shù)值后,這兩者相等之后才運(yùn)行exit 0命令,終止腳本的執(zhí)行。
[root@linuxprobe ~]# vim Guess.sh
#!/bin/bash
PRICE=$(expr $RANDOM % 1000)
TIMES=0
echo "商品實(shí)際價(jià)格為0-999之間,猜猜看是多少?"
while true
do
read -p "請(qǐng)輸入您猜測(cè)的價(jià)格數(shù)目:" INT
let TIMES++
if [ $INT -eq $PRICE ] ; then
echo "恭喜您答對(duì)了,實(shí)際價(jià)格是 $PRICE"
echo "您總共猜測(cè)了 $TIMES 次"
exit 0
elif [ $INT -gt $PRICE ] ; then
echo "太高了!"
else
echo "太低了!"
fi
done
在這個(gè)Guess.sh腳本中,我們添加了一些交互式的信息,從而使得用戶與系統(tǒng)的互動(dòng)性得以增強(qiáng)。而且每當(dāng)循環(huán)到let TIMES++命令時(shí)都會(huì)讓TIMES變量?jī)?nèi)的數(shù)值加1,用來(lái)統(tǒng)計(jì)循環(huán)總計(jì)執(zhí)行了多少次。這可以讓用戶得知總共猜測(cè)了多少次之后,才猜對(duì)價(jià)格。
[root@linuxprobe ~]# bash Guess.sh
商品實(shí)際價(jià)格為0-999之間,猜猜看是多少?
請(qǐng)輸入您猜測(cè)的價(jià)格數(shù)目:500
太低了!
請(qǐng)輸入您猜測(cè)的價(jià)格數(shù)目:800
太高了!
請(qǐng)輸入您猜測(cè)的價(jià)格數(shù)目:650
太低了!
請(qǐng)輸入您猜測(cè)的價(jià)格數(shù)目:720
太高了!
請(qǐng)輸入您猜測(cè)的價(jià)格數(shù)目:690
太低了!
請(qǐng)輸入您猜測(cè)的價(jià)格數(shù)目:700
太高了!
請(qǐng)輸入您猜測(cè)的價(jià)格數(shù)目:695
太高了!
請(qǐng)輸入您猜測(cè)的價(jià)格數(shù)目:692
太高了!
請(qǐng)輸入您猜測(cè)的價(jià)格數(shù)目:691
恭喜您答對(duì)了,實(shí)際價(jià)格是 691
您總共猜測(cè)了 9 次
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: