Linux shell select菜單選擇實(shí)現(xiàn)代碼
假設(shè)需要在shell下實(shí)現(xiàn)一個(gè)菜單,估計(jì)會(huì)使用 循環(huán)和read實(shí)現(xiàn)交互,在學(xué)習(xí)中發(fā)現(xiàn)一個(gè)select可在shell下很方便的實(shí)現(xiàn)這種交互菜單
1. select 語(yǔ)法
select var in ... do #your code done
2. 示例
#! /bin/bash echo "what is your favorite color :" select color in "red" "blue" "green" "white" "black" do echo "you choose is $color" break done
Bash Shell中的select命令簡(jiǎn)單使用示例
前言
今天剛好寫(xiě)了一個(gè)自動(dòng)化打包腳本,再次使用到了bash shell,好幸福的感覺(jué)。這里主要是想介紹一下select命令,這個(gè)命令
可以幫助我們完成菜單選擇功能。
格式
我今天也是第一次使用select流程控制,在php、Java、C這些語(yǔ)言中并沒(méi)有實(shí)現(xiàn)select功能。Bash Shell中,select格式如
下:
select $var in ${list[@]} do statements that can use $var done
在select執(zhí)行時(shí),會(huì)根據(jù)list數(shù)組給出選擇菜單,用戶選擇后的結(jié)果保存在$var變量中,然后執(zhí)行statements語(yǔ)句。執(zhí)行完成
后,再次給出菜單,等待用戶選擇。如果用戶想跳出選擇循環(huán),需要在循環(huán)體中根據(jù)條件增加break語(yǔ)句。
示例
給出一個(gè)select的示例,大家可以參考:
#!/bin/bash fruits=( "apple" "pear" "orange" "watermelon" ) echo "Please guess which fruit I like :" select var in ${fruits[@]} do if [ $var = "apple" ]; then echo "Congratulations, you are my good firend!" break else echo "Try again!" fi done
例子2
#!/bin/sh select ch in "begin" "end" "exit" do case $ch in "begin") echo "start something" ;; "end") echo "stop something" ;; "exit") echo "exit" break; ;; *) echo "ignorant" ;; esac done;
運(yùn)行效果:
yuxuecheng@linux:~/shellSource> ./select_test.sh
1) begin
2) end
3) exit
#? 1
start something
#? 2
stop something
#? 4
ignorant
#? begin
ignorant
#? 3
exit
說(shuō)明:select是循環(huán)選擇,一般與case語(yǔ)句使用。
相關(guān)文章
Shell腳本之文件批量創(chuàng)建與修改的簡(jiǎn)單方法
有時(shí)需要將文件內(nèi)容進(jìn)行修改,如果文件數(shù)量不多可以一個(gè)一個(gè)修改,那么如果文件數(shù)量很多一個(gè)一個(gè)修改很麻煩,這篇文章主要給大家介紹了關(guān)于Shell腳本之文件批量創(chuàng)建與修改的相關(guān)資料,需要的朋友可以參考下2021-06-06Shell腳本一鍵安裝Nginx服務(wù)自定義Nginx版本
這篇文章主要為大家介紹了Shell腳本一鍵安裝Nginx服務(wù),用戶可自定義Nginx版本的腳本示例,有需要的朋友可以借鑒參考下,希望能夠參考下2022-03-03scp 將數(shù)據(jù)從一臺(tái)linux服務(wù)器復(fù)制到另一臺(tái)linux服務(wù)器
這篇文章主要介紹了scp 將數(shù)據(jù)從一臺(tái)linux服務(wù)器復(fù)制到另一臺(tái)linux服務(wù)器,需要的朋友可以參考下2017-09-09Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計(jì)工具
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)的基于SVN的代碼提交量統(tǒng)計(jì)工具,本文直接給出實(shí)現(xiàn)腳本代碼,需要的朋友可以參考下2015-06-06shell腳本中set?-e選項(xiàng)作用范圍小結(jié)
本文主要介紹了shell腳本中set?-e選項(xiàng)作用范圍小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06putty實(shí)現(xiàn)自動(dòng)登錄的方法(ssh和ssh2)
這篇文章主要介紹putty實(shí)現(xiàn)自動(dòng)登錄的方法,需要的朋友可以參考下2013-02-02Linux shell數(shù)組循環(huán)的實(shí)例詳解
這篇文章主要介紹了Linux shell數(shù)組循環(huán)的實(shí)例詳解的相關(guān)資料,這里舉例說(shuō)明如何實(shí)現(xiàn)shell數(shù)組循環(huán),需要的朋友可以參考下2017-08-08