• 流程控制 -- select


    流程控制之select语句

    作用

    select表达式是bash的一种扩展应用,擅长于"交互式场合"。用户可以从一组不同的值中进行选择
    select可以实现菜单的功能;
    select可以与case结合使用;
    

    语法

    PS3=""	
    select var in 列表 
    do 
    	用户选择后,要执行的命令 
    	break 
    done
    
    #PS3与用户交互,默认为 #?,select默认使用PS3与用户交互,定义变量,传递给select var
    #select负责打印菜单,序号) $var
    #in可以省略,使用位置参数
    

    案例

    案例1:

    [root@egon /]# cat select.sh 
    #!/bin/bash 
    PS3='choose one: '		
    select var in {A..D} 	#菜单
    do 
    	echo "your choose is $var"     
    	echo "OK" 
    	break 	# 跳出select,否则是死循环,可以省略
    done 
    
    [root@egon /]# ./select.sh 
    1) A 
    2) B 
    3) C 
    4) D
    choose one: 3 
    your choose is C 
    OK
    
    

    案例2:若省略 in list 则select会把 $@ 当做列表项

    [root@egon /]# cat select.sh 
    #!/bin/bash 
    PS3='choose one: ' # select默认使用PS3变量的值做提示符
    select var 
    do 
    	echo "your choose is $var" 
    	echo "OK" 
    	break # 跳出select,否则是死循环 
    done 
    
    [root@egon /]# ./select.sh 苹果 梨 蔬菜 香蕉 茄子 
    1) 苹果 
    2) 梨 
    3) 蔬菜 
    4) 香蕉 
    5) 茄子 
    choose one: 1 
    your choose is 苹果 
    OK
    

    案例3:select与case

    PS3="Please select a number: "
    select name in zhangsan lisi wangwu zhaoliu
    do
        case $name in
        zhangsan)
            echo "Hello, zhangsan."
            ;;
        lisi)
            echo "Hello,lisi."
            ;;
        wangwu)
            echo "Hello, wangwu."
            ;;
        zhaoliu)
            echo "Hello, zhaoliu."
            ;;
        *)
            echo "Sorry, there is no such person."
            ;;
        esac
    done
    
    [root@hass-11 script]# sh se2.sh 
    1) zhangsan
    2) lisi
    3) wangwu
    4) zhaoliu
    Please select a number: 2
    Hello,lisi.
    Please select a number: 3
    Hello, wangwu.
    Please select a number:
    
  • 相关阅读:
    如何在 SQLServer 中启用 xp_cmdshell 等
    强力解决使用node版本管理工具 NVM 出现的问题(找不到 node,或者找不到 npm)
    [啃书] 预告篇
    [啃书] 第5篇
    [啃书] 第4篇
    [啃书] 第3篇
    [啃书] 第2篇
    [啃书] 第1篇
    [前端随笔][Vue] 多级菜单实现思路——组件嵌套
    [算法小练][图][拓扑排序+深度优先搜索] 平板涂色问题
  • 原文地址:https://www.cnblogs.com/syy1757528181/p/13603844.html
Copyright © 2020-2023  润新知