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 20:46
下一篇 2016-08-21 20:46

相關推薦

  • N25-第五周作業

    第五周作業 1、顯示當前系統上root、fedora或user1用戶的默認shell; grep "^\(root|fedora|user1\)" /etc/passwd | cut -d: -f7 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello(); grep "…

    Linux干貨 2017-02-14
  • 第一周作業

    作業

    Linux干貨 2018-03-20
  • 筆記–8.2–用戶管理,權限管理

    ·硬鏈接,軟鏈接區別 大小 鏈接數 設備,分區 類型 硬連接 一樣大,顯示的是本身的大小 會增加 不能跨分區 是一個文件,相同inode號,忘了位置可通過inode號找到源文件 軟鏈接 不一樣大,鏈接文件大小是路徑的大小 不會增加 可以跨分區,跨設備 兩個文件,不同inode號,像發小廣告,忘了源連接,文件就找不到了 軟鏈接格式:ln -s +絕對路徑或相對…

    Linux干貨 2016-08-05
  • Linux系統程序包的安裝–RPM

           我們知道在操作系統上使用的程序都是有程序員通過開發工具得來的,程序員直接編寫的純文本的文件,我們稱之為源代碼,由于計算機識別的是二進制程序,因此在完成源代碼編寫之后,就必須要經過編譯,使之成為操作系統可以“看得懂”的二進制程序,這里的編譯是通過編譯器來進行的操作,編譯器的功能就是將源代碼程序“轉換”為二進…

    2017-04-23
  • Nginx七層反代服務器 (Blog 20)

    http反代、fastcgi反代

    Linux干貨 2017-12-20

評論列表(1條)

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

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

欧美性久久久久