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

wKiom1e5MyzB5OrIAABwVjESJl0845.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

wKiom1e5M0jS5QQIAACYIwSmEjA525.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

wKiom1e5M2Gir7pAAAD012-42T0347.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

wKioL1e5M3_CzBw_AAQ7ycH8GN8087.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

wKiom1e5M5qwj99oAAMW8fsFzLA398.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

wKiom1e5M7XCw5rgAANu6QbuJo4791.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

wKioL1e5M_2Ac8x4AAJzOg5L7io136.gif

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章