• SHELL脚本编程循环篇-select循环


                  SHELL脚本编程循环篇-select循环 

                                              作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

    一.select循环的语法格式

    [root@node101.yinzhengjie.org.cn ~]# help select
    select: select NAME [in WORDS ... ;] do COMMANDS; done
        Select words from a list and execute commands.
        
        The WORDS are expanded, generating a list of words.  The
        set of expanded words is printed on the standard error, each
        preceded by a number.  If `in WORDS' is not present, `in "$@"'
        is assumed.  The PS3 prompt is then displayed and a line read
        from the standard input.  If the line consists of the number
        corresponding to one of the displayed words, then NAME is set
        to that word.  If the line is empty, WORDS and the prompt are
        redisplayed.  If EOF is read, the command completes.  Any other
        value read causes NAME to be set to null.  The line read is saved
        in the variable REPLY.  COMMANDS are executed after each selection
        until a break command is executed.
        
        Exit Status:
        Returns the status of the last command executed.
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# help select
    select variable in list
      do
        循环体命令
    done
    
    
    温馨提示:   select 循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示 PS3 提示符,等待用户输入   用户输入菜单列表中的某个数字,执行相应的命令   用户输入被保存在内置变量 REPLY 中   select 是个无限循环,因此要记住用 break 命令退出循环,或用 exit 命令终止脚本。也可以按 ctrl+c 退出循环   select 经常和 case 联合使用   与 for 循环类似,可以省略 in list,此时使用位置参量

    二.案例实战(自定义菜单)

    [root@node101.yinzhengjie.org.cn ~]# cat shell/select_menu.sh 
    #!/bin/bash
    #
    #********************************************************************
    #Author:        yinzhengjie
    #QQ:             1053419035
    #Date:             2019-11-23
    #FileName:        shell/menu.sh
    #URL:             http://www.cnblogs.com/yinzhengjie
    #Description:        The test script
    #Copyright notice:     original works, no reprint! Otherwise, legal liability will be investigated.
    #********************************************************************
    
    #使用PS3来自定义select对应的提示符
    PS3="Please input a number>>>: "
    
    select MENU in 鲍鱼 海参 佛跳墙 龙虾 帝王蟹 燕窝 quit;do
        #注意,这里的"$REPLY"变量就是上面select的列表中对应的值
        case $REPLY in
            1|2)
                echo "The price 100"
            ;;
            3|5)
                echo "The price 150"
            ;;
            4|6)
                echo "The price 80"
            ;;
        7)
            echo "bye..."
            break
            ;;
            *)
                echo "Choose false"
            ;;
        esac
    done
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# bash shell/select_menu.sh 
    1) 鲍鱼
    2) 海参
    3) 佛跳墙
    4) 龙虾
    5) 帝王蟹
    6) 燕窝
    7) quit
    Please input a number>>>: 1
    The price 100
    Please input a number>>>: 2
    The price 100
    Please input a number>>>: 3
    The price 150
    Please input a number>>>: 4
    The price 80
    Please input a number>>>: 5
    The price 150
    Please input a number>>>: 6
    The price 80
    Please input a number>>>: 7
    bye...
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
  • 相关阅读:
    类的加载与ClassLoader的理解
    反射:获取Class 类的实例(四种方法)
    磁盘调度算法
    死锁检测算法
    银行家算法
    最低松弛度调度算法模拟
    多级反馈队列调度算法
    内存中:请求调页存储管理方式的模拟
    内存的动态分区分配方式的模拟
    “短进程优先”调度算法
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/9314517.html
Copyright © 2020-2023  润新知