理論部分:
循環的意思就是讓程式重複地執行某些語句;
whiler循環就是循環結構的一種,當事先不知道循環該執行多少次,就要用到while循環;
while循環語句的運作過程
使用while循環語句時,可以根據特定的條件反複執行一個指令,直到條件不滿足為止;
while會出現死循環的過程,是以循環體内的指令序列内應包括修改測試條件的語句
while語句的文法結構:
注意:
使用while循環語句時,有兩個特殊的條件測試操作即true(真)和false(假);
使用true時表示條件永遠成立,循環體内的指令序列将會無限執行下去,除非強制終止腳本或使用exit退出腳本;
反之使用false時循環體将不會被執行; ’這兩個特殊條件也可以用在if語句的條件測試中
應用執行個體
使用while語句執行批量添加規範的使用者
stu 1 stu 2…….
我們也可以使用while批量添加使用者,但是前提是使用者的命名必須有規範,有規律否則無法使用while進行建立
vim useradd.sh
#!/bin/bash
user="stu"
i=1
while [ $i -le 20 ]
do
useradd ${user}$i
echo "123456" | passwd --stdin ${user}$i &>/dev/null
echo "${user}$i Users to add success"
let i++
done
首先定義一個使用者名的字首為stu
在定義一個變量用于改變條件
while 當$i 小于等于20 的時候執行下面的指令序列 let i++ 表示每循環一次i的值加1
當循環到21次的時候這個測試條件不成立了,因為21不小于等于20是以直接調到done結束循環
執行的結果
檢驗:
也可以使用while循環删除
vim userdel.sh
userdel -r ${user}$i &> /dev/null
echo "${user}$i Users to del success"
執行結果
實戰2
針對上訴要求主要設計思路如下
if通過變量RANDOM可獲得一個小于2十六次方的随機整數,計算其與1000的餘數即可獲得0~999的随機價格,反複操作可以通過true作為測試條件,在使用者猜出實際價格為止,判斷猜測價格與實際價格的過程使用if語句實作,嵌套在while循環内使用變量來計算猜測的次數
例如:
vim caijiage.sh
price=$(expr $RANDOM % 1000)
times=0
echo "The prices of the goods is 0-999,Can you guess what is?"
while true
read -p "Please enter your price:" INT
let times++
if [ $INT -eq $price ]
then
echo "Good you guessed it"
echo "You guess the total $times times "
exit 0
elif
[ $INT -gt $price ]
echo "Is too high "
else
echo "It's too low "
fi
執行腳本的結果