新聞中心

創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比青川網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式青川網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋青川地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
select in 是 Shell 獨(dú)有的一種循環(huán),非常適合終端(Terminal)這樣的交互場(chǎng)景,C語(yǔ)言、C++、Java、Python、C# 等其它編程語(yǔ)言中是沒(méi)有的。
Shell select in 循環(huán)的用法如下:
select variable in value_list
do
statements
done
variable 表示變量,value_list 表示取值列表,in 是 Shell 中的關(guān)鍵字。你看,select in 和 for in 的語(yǔ)法是多么地相似。
我們先來(lái)看一個(gè) select in 循環(huán)的例子:
#!/bin/bash
echo "What is your favourite OS?"
select name in "Linux" "Windows" "Mac OS" "UNIX" "Android"
do
echo $name
done
echo "You have selected $name"
運(yùn)行結(jié)果:
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 4↙
You have selected UNIX
#? 1↙
You have selected Linux
#? 9↙
You have selected
#? 2↙
You have selected Windows
#?^D
#?用來(lái)提示用戶輸入菜單編號(hào);
^D表示按下 Ctrl+D 組合鍵,它的作用是結(jié)束 select in 循環(huán)。
運(yùn)行到 select 語(yǔ)句后,取值列表 value_list 中的內(nèi)容會(huì)以菜單的形式顯示出來(lái),用戶輸入菜單編號(hào),就表示選中了某個(gè)值,這個(gè)值就會(huì)賦給變量 variable,然后再執(zhí)行循環(huán)體中的 statements(do 和 done 之間的部分)。
每次循環(huán)時(shí) select 都會(huì)要求用戶輸入菜單編號(hào),并使用環(huán)境變量 PS3 的值作為提示符,PS3 的默認(rèn)值為
#?,修改 PS3 的值就可以修改提示符。
如果用戶輸入的菜單編號(hào)不在范圍之內(nèi),例如上面我們輸入的 9,那么就會(huì)給 variable 賦一個(gè)空值;如果用戶輸入一個(gè)空值(什么也不輸入,直接回車(chē)),會(huì)重新顯示一遍菜單。
注意,select 是無(wú)限循環(huán)(死循環(huán)),輸入空值,或者輸入的值無(wú)效,都不會(huì)結(jié)束循環(huán),只有遇到 break 語(yǔ)句,或者按下 Ctrl+D 組合鍵才能結(jié)束循環(huán)。
完整實(shí)例
select in 通常和 case in 一起使用,在用戶輸入不同的編號(hào)時(shí)可以做出不同的反應(yīng)。
修改上面的代碼,加入 case in 語(yǔ)句:
#!/bin/bash
echo "What is your favourite OS?"
select name in "Linux" "Windows" "Mac OS" "UNIX" "Android"
do
case $name in
"Linux")
echo "Linux是一個(gè)類(lèi)UNIX操作系統(tǒng),它開(kāi)源免費(fèi),運(yùn)行在各種服務(wù)器設(shè)備和嵌入式設(shè)備。"
break
;;
"Windows")
echo "Windows是微軟開(kāi)發(fā)的個(gè)人電腦操作系統(tǒng),它是閉源收費(fèi)的。"
break
;;
"Mac OS")
echo "Mac OS是蘋(píng)果公司基于UNIX開(kāi)發(fā)的一款圖形界面操作系統(tǒng),只能運(yùn)行與蘋(píng)果提供的硬件之上。"
break
;;
"UNIX")
echo "UNIX是操作系統(tǒng)的開(kāi)山鼻祖,現(xiàn)在已經(jīng)逐漸退出歷史舞臺(tái),只應(yīng)用在特殊場(chǎng)合。"
break
;;
"Android")
echo "Android是由Google開(kāi)發(fā)的手機(jī)操作系統(tǒng),目前已經(jīng)占據(jù)了70%的市場(chǎng)份額。"
break
;;
*)
echo "輸入錯(cuò)誤,請(qǐng)重新輸入"
esac
done
用戶只有輸入正確的編號(hào)才會(huì)結(jié)束循環(huán),如果輸入錯(cuò)誤,會(huì)要求重新輸入。
運(yùn)行結(jié)果1,輸入正確選項(xiàng):
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 2
Windows是微軟開(kāi)發(fā)的個(gè)人電腦操作系統(tǒng),它是閉源收費(fèi)的。
運(yùn)行結(jié)果2,輸入錯(cuò)誤選項(xiàng):
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 7
輸入錯(cuò)誤,請(qǐng)重新輸入
#? 4
UNIX是操作系統(tǒng)的開(kāi)山鼻祖,現(xiàn)在已經(jīng)逐漸退出歷史舞臺(tái),只應(yīng)用在特殊場(chǎng)合。
運(yùn)行結(jié)果3,輸入空值:
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 3
Mac OS是蘋(píng)果公司基于UNIX開(kāi)發(fā)的一款圖形界面操作系統(tǒng),只能運(yùn)行與蘋(píng)果提供的硬件之上。
網(wǎng)頁(yè)題目:Shellselectin循環(huán)詳解
鏈接URL:http://www.5511xx.com/article/cceoosd.html


咨詢
建站咨詢
