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.178linux.com/38232

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

相关推荐

  • 系统管理之网络管理

    今天给大家分享一些网络方面的知识,,这块的知识很重要哦,都是涉及网络最底层的链路和协议,是我们学习大型服务的基础,和前提.希望大家努力理解这方面的内容,今天的内容大概有这几方面: 1.计算机网络概念 2.计算机网络体系结构 3.物理层 4.数据链路层 5.网络层 6.IP地址及子网 7.传输层 8.应用层 计算机网络概念 计算机网络是个发展中的概念和技术,具…

    Linux干货 2016-09-05
  • LVS产生背景、原理及LVS-DR应用实例(一)

    一、什么是lvs? 它产生的背景,使用场景是什么?      LVS(Linux Virtual Server) 可以理解为一个虚拟服务器系统。       Internet的飞速发展,网络带宽的增长,Web服务中越来越多地使用CGI、动态主页等CPU密集型应用,这对服务器的性能…

    Linux干货 2016-10-29
  • 4th work

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其他用户均没有任何访问权限。 [root@localhost etc]# cp -r /etc/skel/ /home/tuser1 [root@localhost etc]# chmod go-rwx /home/tuser1/ 2、编辑/etc/gr…

    Linux干货 2017-10-09
  • N25-第二周作业

    1、linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 linux上处理目录的常用命令:     ls :列出目录     cd :切换目录     pwd:显示当前工作路径    &nbs…

    Linux干货 2016-12-13
  • 一起学DNS系列(十三)图文详说A、CNAME、MX和NS记录

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/226194    前面用了12个小节对DNS的基础、以及Windows的DNS系统作了较详细的描述,下面的几节主要是说一些有关DNS应用方面…

    2015-03-18
  • zabbix之报警功能的实现

    一、注册微信公众号 首先申请微信公众平台https://mp.weixin.qq.com/一个人最多申请5个公众号,所以还是可以的 申请完之后就可以根据腾讯的提示使用微信公众号了,然后用你自己的微信扫描关注微信号。 就可以看到用户数了,接下来的就要使用的用户的微信ID号了。点击用户查看用户的微信ID号。在浏览器查看用户的微信ID号。就是那个红色的ID了。 h…

    Linux干货 2017-03-27

评论列表(1条)

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

    对命令的理解很深刻,望以后多练习,争取完全掌握。