Shell中select in的具體使用
select in 用法
select in循環(huán)用來(lái)增強(qiáng)交互性,它可以顯示出帶編號(hào)的菜單,用戶輸入不同的編號(hào)就可以選擇不同的菜單,并執(zhí)行不同的功能。
select in 是shell獨(dú)有的一種循環(huán),非常適合終端(Terminal)這樣的交互場(chǎng)景。這是其他語(yǔ)言所沒(méi)有的。
用法:
select variable in value_list #variable表示變量,value_list表示取值列表 do statements done
1.#?用來(lái)提示用戶輸入菜單編號(hào);^D表示按下Ctrl+D組合鍵,它的作用是結(jié)束select in循環(huán)
2.每次循環(huán)時(shí),selevt都會(huì)要求用戶輸入菜單編號(hào),并使用環(huán)境變量PS3的值作為提示符,PS3的默認(rèn)值為#?,修改PS3的值就可以修改提示符
3.如果用戶輸入的菜單編號(hào)不在范圍之內(nèi),那么就會(huì)給variable賦一個(gè)空值;如果用戶輸入一個(gè)空值,會(huì)重新顯示一遍菜單
例1.
vim test.sh #!/bin/bash #test the usage of 'select in'. echo "What is your favourite OS? " select name in "Linux" "Windows" "Mac OS" "Unix" "Android" '//“ ”可以省略' do echo $name done ##此處不會(huì)自動(dòng)跳出select in 循環(huán),需要按ctrl+D跳出select in echo "You have selected $name"
運(yùn)行:
[root@server1 ~]# chmod u+x test.sh
[root@server1 ~]# ./test.sh
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) Unix
5) Android
#? 1
Linux
#? '//按ctrl+D'
You have selected Linux=======================================================
[root@server1 ~]# ./test.sh
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) Unix
5) Android
#? 5
Android
#? 3
Mac OS
#? 2
Windows
#? '//按ctrl+D'
You have selected Windows
select in 通常和 case in 搭配使用
例2:
#!/bin/bash #"select in" is usually used with "case in" echo "What is your favourite OS? " select name in "Linux" "Windows" "Mac OS" "Unix" "Android" do case $name in "Linux") echo "Linux是一個(gè)類Unix操作系統(tǒng),它開(kāi)源免費(fèi)" break ;; "Windows") echo "Mac OS是微軟開(kāi)發(fā)的個(gè)人電腦操作系統(tǒng),它是閉源收費(fèi)的" break ;; "Mac OS") echo "Mac OS是蘋果公司開(kāi)發(fā)的一款圖形界面操作系統(tǒng)" break ;; "Unix") echo "Unix是操作系統(tǒng)的開(kāi)山鼻祖,現(xiàn)在只應(yīng)用在一些特殊場(chǎng)合" break ;; "Android") echo "Android是由Google開(kāi)發(fā)的手機(jī)操作系統(tǒng)" break ;; *) echo "沒(méi)有這個(gè)選項(xiàng)!" break esac done
運(yùn)行:
[root@server1 ~]# ./test2.sh
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) Unix
5) Android
#? 1
Linux是一個(gè)類Unix操作系統(tǒng),它開(kāi)源免費(fèi)[root@server1 ~]# ./test2.sh
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) Unix
5) Android
#? 2
Mac OS是微軟開(kāi)發(fā)的個(gè)人電腦操作系統(tǒng),它是閉源收費(fèi)的[root@server1 ~]# ./test2.sh
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) Unix
5) Android
#? 5
Android是由Google開(kāi)發(fā)的手機(jī)操作系統(tǒng)
到此這篇關(guān)于Shell中select in的具體使用的文章就介紹到這了,更多相關(guān)Shell select in內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Shell腳本實(shí)現(xiàn)自動(dòng)輸入密碼登錄服務(wù)器
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)自動(dòng)輸入密碼登錄服務(wù)器,本文使用expect來(lái)實(shí)現(xiàn)這個(gè)需求,講解了expect的安裝及使用腳本,需要的朋友可以參考下2015-03-03監(jiān)控服務(wù)器swap并重啟php的Shell腳本
有一臺(tái)服務(wù)器老是交換扇區(qū)占滿然后失去響應(yīng),很煩,因?yàn)榧虞d了以前別人寫的一個(gè)php擴(kuò)展,效率低,資源占用大,悲劇的是現(xiàn)在還沒(méi)有可以替換的東西2014-03-03linux whatis與whatis database 使用及查詢方法(man使用實(shí)例)
在學(xué)習(xí)man命令時(shí)候,估計(jì)很多朋友都發(fā)現(xiàn)有man –f ,man –k 參數(shù),可以查出很多數(shù)據(jù)。這些有的與man手冊(cè)頁(yè)相同,有些不是屬于手冊(cè)頁(yè)的。它們數(shù)據(jù)怎么收集來(lái)的,并且whatis是怎么樣工作的2015-10-10如何解決 shell 腳本重復(fù)執(zhí)行的問(wèn)題
假如執(zhí)行備份腳本消耗的時(shí)間遠(yuǎn)大于設(shè)置的備份間隔的話,系統(tǒng)會(huì)出現(xiàn)多個(gè)同時(shí)在執(zhí)行腳本的Bash實(shí)例,會(huì)占用大量的系統(tǒng)資源,進(jìn)而影響正常業(yè)務(wù)程序的運(yùn)行,那如何解決上述shell腳本重復(fù)執(zhí)行的問(wèn)題呢,本文將要介紹的 flock 命令可以解決這個(gè)問(wèn)題2021-05-05Linux下科學(xué)計(jì)數(shù)法(e)轉(zhuǎn)化為數(shù)字的方法
這篇文章主要介紹了Linux下科學(xué)計(jì)數(shù)法(e)轉(zhuǎn)化為數(shù)字的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05