while循環的一般格式如下:
~~~
while ?[Gondition ]
? ? ? do
? ? ? ? ? Instruction
done
~~~
在while循環中,必須放入一個導致結果為真或假的變量或表達式,而在while循環體中則可以放人任意多的指令。
## while循環在Linux代碼中的使用
當程序遇到一個while循環時,首先檢測它的條件,詢問它"這個條件是真還是假?",僅當條件為真時,程序才會讀入while循環體中的指令。
請看下面演示while循環的例子:
~~~
declare raining ="1”
while["$raining" -eq "1"〕
do
echo "Still raining."
done
~~~
## while循環在菜單中的應用
在創建菜單界面時,通常要用到while循環。在任何程序菜單中,程序用戶都期望順序是這樣的:
1.顯示菜單
2.選擇菜單選項
3甲運行有關程序
4.返回菜單進一步選擇
設計這樣一個菜單最簡單的方法,就是把所有的這些指令都放在while循環中,在程序每次執行完用戶的選擇要求后,就返回到while循環,重新開始。請看下面的例子:
~~~
#!/bin/bash
declare flag ="1"
while ["$flag" -eq "1"]
do
clear
echo ""
echo "The Telephone Book"
echo ""
echo "1.Display A Telephone Number"
echo "2. Add A New Telephone Number"
echo ""
echo "Q Quit"
echo " "
echo "Enter your selection:"
echo ""
read selection
case $selection in
"1")
#Run the subprogram to display a phone number
getnum
;;
"2")
#Run the subprogram to add a mew phone number
addnum
;;
"q")
$flag="0"
;;
"Q")
$flag="0"
;;
*)
echo "You made an irnalid selection,下ry again."
esac
done
~~~
##while在計時循環中的應用
讀者可能碰到過這樣一種情況,就是想在程序執行下一組指令前,先讓程序暫停一會兒。
例如,可能想讓程序在屏幕上自動顯示一系列信息,而在每顯示下一條信息之前,讓上一條信息在屏幕上停留一段時間—一種幻燈式的放映,與在Windows程序中見到的不一樣。
要想讓程序暫停足夠長的時間以方便用戶閱讀信息,方法之一就是用一種所謂的計時循環(timing loop)來創建這樣一種暫停。計時循環其實是一種簡單的while循環,僅僅是在循環體中用一條指令給一個變量加1。請看下面的例子:
~~~
declare counter =0
while ["$counter" -lt 1000]
do
let $counter="$counter+1"
done
~~~
在這個例子中,程序首先給變量counter賦值為0,然后就進人while循環。循環體中惟一一條指令的作用就是給計數器(counter)的值加1,并將新值重新賦給計數器變量(counter)。while循環一直記數到變量counter的值達到999為止--這時,程序將退出while循環。
可以通過條件表達式中值的加、減來調整暫停的時間。在本例中,條件表達式中counter的值是1000。若增加這個值,則暫停的時間將變長;若減少這個值,則暫停的時間會變短。
## 避免死循環
如果while循環的條件是假,程序就不會執行循環體中的任何指令。因此,while循環體中的指令也就從不重復。事實上,它們根本就未執行過。請看下面的例子:
~~~
declare raining="0"
while ["$raining -eq "1"]
do
echo "Still raining"
clear
~~~
在這個例子中,程序根本不顯示任何信息,因為$raining的值不是1,程序跳過while循環.
如果while循環的條件是真,程序至少執行一次循環體中的所有指令。
如果while循環的條件永遠是真,那么程序就一遍又一遍地執行循環體中的指令,程序永不結束運行。我們把這種情形稱為死循環( endless loop )。
~~~
declare raining="1"
while ["$raining -eq "1"]
do
echo "Still raining"
clear
~~~
沒有一個程序員愿意在程序中放人一個死循環。為避免這種情況的出現,必須確保while循環體中至少有一個指令。可以修改while循環條件中所用的真值或假值。
~~~
declare raining="1"
while ["$raining -eq "1"]
do
let $raning="0"
clear
~~~
- 前言
- linux基礎(一)------登錄以及文件系統的了解
- linux基礎(二)----linux常用命令積累
- linux基礎(三)----linux命令系統學習----安裝和登錄命令
- linux基礎(四)----linux命令系統學習----文件處理命令
- linux基礎(五)----linux命令系統學習----系統管理命令
- linux基礎(六)----linux命令系統學習----網絡操作命令
- linux基礎(七)----linux命令系統學習----系統安全相關命令
- linux基礎(八)----linux命令系統學習----其它命令
- linux基礎(九)----linux性能監測
- linux基礎(十)----linux網絡配置詳細步驟---橋接模式和兩臺機子的遠程通信
- linux基礎(十一)----linux編程基礎----變量
- linux基礎(十二)----linux編程基礎----與用戶交互
- linux基礎(十三)----linux編程基礎----linux運算符
- linux基礎(十四)----linux編程基礎----linux條件控制語句----if else語句
- linux基礎(十五)----linux編程基礎----linux條件控制語句----case語句
- linux基礎(十六)----linux編程基礎----linux條件控制語句----多層嵌套控制結構
- linux基礎(十七)----linux編程基礎----linux循環控制語句----while循環
- linux基礎(十八)----linux編程基礎----linux循環控制語句----for in循環
- linux基礎(十九)----linux編程基礎----linux循環控制語句----break中斷和continue繼續
- linux基礎(二十)----linux編程基礎----子程序----函數