select循環與菜單的用法
1、select循環主要用于創建菜單,其按數字順序排列并且顯示在標準錯誤輸出上,并顯示PS3提示符,等待用戶輸入選擇內容,用戶一旦輸入菜單中的某個數字,則執行相應菜單中的命令。用戶輸入的內容被保存在內置變量REPLY中。
select的用法:
select variable [in list] ;
do
循環體命令
don
示例1:
[root@liang7 bin]# cat select1.sh #!/bin/bash select menu in BJ SH GZ SZ HN ; do echo "您選擇的城市為:$menu" done
2、select是一個無限循環,會一直讓進行選擇并執行循環體,因此一般使用break命令退出循環,或使用exit命令終止腳本,也可以按ctrl+c退出腳本。
示例2:
[root@liang7 bin]# cat select1.sh #!/bin/bash select menu in BJ SH GZ SZ HN; do echo "您選擇的城市為:$menu" break done
3、因為select默認的提示符是PS3提示符,執行select時的提示信息不明確,不知道為什么要選擇,因此使用select前可以先定義PS3的提示信息。
示例3:
[root@liang7 bin]# cat select1.sh #!/bin/bash PS3="請按數字選擇您喜歡的城市:" select menu in BJ SH GZ SZ HN; do echo "您選擇的城市為:$menu" break done
4、select經常和case結合使用,實現對選擇的結果進行匹配
示例4:
[root@liang7 bin]# cat select1.sh #!/bin/bash PS3="請按數字選擇您喜歡的城市:" select menu in BJ SH GZ SZ HN; do case $menu in BJ) echo "北京簡稱京,是中華人民共和國的首都,也是中國政治、文化、交通、旅游和國際交往的中心。" ;; SH) echo "上海簡稱滬,別稱申,是中國最大的經濟中心城市,也是國際著名的港口城市。" ;; GZ) echo "廣州簡稱穗,別稱羊城,中國第三大城市,中國最主要的對外開放城市之一,作為對外貿易的窗口,外國人士眾多,被稱為“第三世界的首都”,是全國華僑最多的大城市。" ;; SZ) echo "深圳,別稱鵬城,廣東省轄市,深圳是中國改革開放建立的第一個經濟特區,是中國改革開放的窗口,已發展為有一定影響力的國際化城市。" ;; HN) echo "河南,簡稱“豫”,省會鄭州。位于黃河中下游,是中華民族與中華文明的主要發祥地之一,文物古跡眾多,旅游資源豐富。歷史上先后有20多個朝代在這里建都。" ;; *) echo "您選擇的城市不在列表范圍內" ;; esac break done
5、用戶輸入的內容被保存在內置變量REPLY中,可以調用REPLY變量顯示輸入的內容。
示例5:
[root@liang7 bin]# cat select1.sh #!/bin/bash PS3="請按數字選擇您喜歡的城市:" select menu in BJ SH GZ SZ HN; do case $menu in BJ) echo "您輸入的內容為:$REPLY" echo "北京簡稱京,是中華人民共和國的首都,也是中國政治、文化、交通、旅游和國際交往的中心。" ;; SH) echo "您輸入的內容為:$REPLY" echo "上海簡稱滬,別稱申,是中國最大的經濟中心城市,也是國際著名的港口城市。" ;; GZ) echo "您輸入的內容為:$REPLY" echo "廣州簡稱穗,別稱羊城,中國第三大城市,中國最主要的對外開放城市之一,作為對外貿易的窗口,外國人士眾多,被稱為“第三世界的首都”,是全國華僑最多的大城市。" ;; SZ) echo "您輸入的內容為:$REPLY" echo "深圳,別稱鵬城,廣東省轄市,深圳是中國改革開放建立的第一個經濟特區,是中國改革開放的窗口,已發展為有一定影響力的國際化城市。" ;; HN) echo "您輸入的內容為:$REPLY" echo "河南,簡稱“豫”,省會鄭州。位于黃河中下游,是中華民族與中華文明的主要發祥地之一,文物古跡眾多,旅游資源豐富。歷史上先后有20多個朝代在這里建都。" ;; *) echo "您輸入的內容為:$REPLY" echo "您選擇的城市不在列表范圍內" ;; esac break done
6、一般情況下select中的菜單是寫死的,但有的時候菜單是來回變化的,這時可以在腳本后跟上參數當菜單選項。
示例6:
[root@liang7 bin]# cat select1.sh #!/bin/bash PS3="請按數字選擇您喜歡的城市:" select menu do case $menu in BJ) echo "您輸入的內容為:$REPLY" echo "北京簡稱京,是中華人民共和國的首都,也是中國政治、文化、交通、旅游和國際交往的中心。" ;; SH) echo "您輸入的內容為:$REPLY" echo "上海簡稱滬,別稱申,是中國最大的經濟中心城市,也是國際著名的港口城市。" ;; GZ) echo "您輸入的內容為:$REPLY" echo "廣州簡稱穗,別稱羊城,中國第三大城市,中國最主要的對外開放城市之一,作為對外貿易的窗口,外國人士眾多,被稱為“第三世界的首都”,是全國華僑最多的大城市。" ;; SZ) echo "您輸入的內容為:$REPLY" echo "深圳,別稱鵬城,廣東省轄市,深圳是中國改革開放建立的第一個經濟特區,是中國改革開放的窗口,已發展為有一定影響力的國際化城市。" ;; HN) echo "您輸入的內容為:$REPLY" echo "河南,簡稱“豫”,省會鄭州。位于黃河中下游,是中華民族與中華文明的主要發祥地之一,文物古跡眾多,旅游資源豐富。歷史上先后有20多個朝代在這里建都。" ;; *) echo "您輸入的內容為:$REPLY" echo "您選擇的城市不在列表范圍內" ;; esac break done
7、select還可以將命令作為菜單,選擇某個命令則執行某個命令。
示例7:
[root@liang7 bin]# cat select2.sh #!/bin/bash PS3="請選擇您要執行的命令:" select CMD in ls "ls -l" pwd hostname do $CMD break done
原創文章,作者:苦澀咖啡,如若轉載,請注明出處:http://www.www58058.com/38232
對命令的理解很深刻,望以后多練習,爭取完全掌握。