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