select循環與菜單的用法

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

3GIF.gif

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

4GIF.gif

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

5GIF.gif

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

6GIF.gif

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

7GIF.gif

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

8GIF.gif

7、select還可以將命令作為菜單,選擇某個命令則執行某個命令。

示例7:

[root@liang7 bin]# cat select2.sh 
#!/bin/bash

PS3="請選擇您要執行的命令:"
select CMD in ls "ls -l" pwd hostname
do
    $CMD
    break
done

9GIF.gif

原創文章,作者:苦澀咖啡,如若轉載,請注明出處:http://www.www58058.com/38232

(0)
苦澀咖啡苦澀咖啡
上一篇 2016-08-21
下一篇 2016-08-21

相關推薦

  • scp命令

    scp命令: 基于ssh連接完成復制   scp? [options]? SRC…? DEST/ scp? [options]? SRC? DEST   存在兩種使用情形: PULL獲取:? scp? [options]? [user@]host:/PATH/TO/SOMEFILE?? /PATH/TO/SOMEFILE PU…

    Linux干貨 2017-10-21
  • Hadoop HDFS分布式文件系統設計要點與架構

    Hadoop簡介:一個分布式系統基礎架構,由Apache基金會開發。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力高速運算和存儲。Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有著高容錯性的特點,并且設計用來部署在低廉的(low-cost)硬件…

    Linux干貨 2015-04-13
  • redis-cli的一些有趣也很有用的功能

    redis-cli我們最常用的三個參數就是-h、-p、-a選項,分配用來指定連接的redis-server的host、port和登錄密碼。 通過redis-cli –help發現,redis-cli還提供了其他很多的參數和功能。 1)-x-x選項從標準輸入(stdin)讀取最后一個參數。 比如從管道中讀取輸入: echo -en “chen.qun” | r…

    Linux干貨 2015-03-16
  • ACL權限管理練習

    ACL簡介;
    權限管理練習

    2017-09-11
  • 15磁盤管理

    在系統中,常見的硬盤接口有分兩類:并行的和串行的 并行: IDE: 133MB/s SCSI: 640MB/s 串行: SATA: 6Gbps SAS: 6Gbps USB: 480MB/s 存儲設備的設備文件命名方式大致為:/dev/DEV_FILE IDE: /dev/hd#  #–>0,1,2,3 SCSI,SATA,SAS…

    Linux干貨 2016-12-02
  • UEFI原理小結

    1. UEFI 和 BIOS        UEFI 和 BIOS它們都可以認為是一種燒錄了不同程序的PC固件,它們都可以用來啟動系統,并且UEFI可兼容MBR,并直接支持GPT;BIOS是IBM PC兼容機中常用的一種固件; UEFI是Intel開發和發布的EFI的繼任者,它由UEFI論…

    Linux干貨 2016-05-01

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-22 09:59

    對命令的理解很深刻,望以后多練習,爭取完全掌握。

欧美性久久久久