• 16 shell select in 循环


    select in 是 Shell 独有的一种循环,适用于与终端(Terminal)进行交互,在其他编程语言中是没有的。

    用法
    说明
    脚本

    select var in val_list
    do
        statements
    done

    var 表示变量,val_list 表示取值列表,与for in循环的语法非常相似

    1. select in循环用来增强交互性,运行到 select 语句时,取值列表 val_list 中的内容会以菜单的形式显示出来,用户输入菜单编号,就表示选中了某个值,这个值就会赋给变量 var,然后再执行循环体中的 statements。
    2. 每次循环时 select 都会要求用户输入菜单编号,并使用环境变量 PS3 的值作为提示符,PS3 的默认值为#?
    3. 如果用户输入的菜单编号不在范围之内或什么也不输入直接回车,var会被赋一个空值,终端会重新显示一遍菜单。
    4. select 是无限循环(死循环),输入空值,或者输入的值无效,都不会结束循环,只有遇到 break 语句,或者按下 Ctrl+D 组合键才能结束循环。
    1. #!/bin/bash
    2. echo "What is your favourite OS?"
    3. select name in "Linux"Windows" "Mac OS" "UNIX" "Android"
    4. do
    5. echo "You have selected $name"
    6. done

    运行结果:

    What is your favourite OS?
    1) Linux
    2) Windows
    3) Mac OS
    4) UNIX
    5) Android
    #? 4↙
    You have selected UNIX
    #? 9↙
    You have selected
    #? 2↙
    You have selected Windows
    #?^D

    #?用来提示用户输入菜单编号;^D表示按下 Ctrl+D 组合键,它的作用是结束 select in 循环。

    select in 与case in一起使用,在用户输入不同编号时做出不同的反应

    脚本
    结果
    1. #!/bin/bash
    2. echo 'please select your favourite season:'
    3. select var in spring summer autumn winter
    4. do
    5. echo "you select the $var"
    6. case "$var" in
    7. spring)
    8. echo 'spring-->3-5.'
    9. break;;
    10. summer)
    11. echo 'summer-->6-8.'
    12. break;;
    13. autumn)
    14. echo 'autumn-->9-11.'
    15. break;;
    16. winter)
    17. echo 'winter-->12-2'
    18. break;;
    19. *)
    20. echo 'you input error, re-input'
    21. esac
    22. done

    运行结果1,输入正确选项:

    • please select your favourite season:
    • 1) spring
    • 2) summer
    • 3) autumn
    • 4) winter
    • #? 1
    • you select the spring
    • spring-->3-5.

    运行结果2,输入错误选项:

    • please select your favourite season:
    • 1) spring
    • 2) summer
    • 3) autumn
    • 4) winter
    • #? r #输入错误,会要求重新输入
    • you select the 
    • you input error, re-input
    • #? 2
    • you select the summer
    • summer-->6-8.

    运行结果3,输入空值:

    1. please select your favourite season:
    2. 1) spring
    3. 2) summer
    4. 3) autumn
    5. 4) winter
    6. #?  #输入空值,终端重新显示一遍菜单
    7. 1) spring
    8. 2) summer
    9. 3) autumn
    10. 4) winter
    11. #? 2
    12. you select the summer
    13. summer-->6-8.
  • 相关阅读:
    disable_irq与disable_irq_nosync使用场景
    linux中断处理原理分析
    工作队列(workqueue) create_workqueue/schedule_work/queue_work
    使用git建立远程仓库,让别人git clone下来
    C中字符串的几种定义方法及说明
    Linux 2.6内核Makefile浅析
    探究platform_driver中的shutdown用途
    匆匆
    至强CPU性能排行,从X3210起,由低至高排列。
    Linux 命令行快捷键
  • 原文地址:https://www.cnblogs.com/mianbaoshu/p/12069652.html
Copyright © 2020-2023  润新知