• 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 ~]# 
  • 相关阅读:
    两数相除(leetcode29)
    基本数据类型与包装数据类型的使用标准
    BigDecimal
    整型包装类值的比较
    实现strStr()(leetcode28)
    移除数组(leetcode27)
    删除排序数组中的重复项(leetcode26)
    mybatis.xml配置文件详解
    多表连接
    动态SQL
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/9314517.html
Copyright © 2020-2023  润新知