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.

16 shell select in 循环的更多相关文章

  1. Linux Shell系列教程之(十四) Shell Select教程

    本文是Linux Shell系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句case ...

  2. (转)Linux Shell系列教程之(十四) Shell Select教程

    本文属于<Linux Shell 系列教程>文章系列,该系列共包括以下 18 部分: Linux Shell系列教程之(一)Shell简介 Linux Shell系列教程之(二)第一个Sh ...

  3. 04 shell编程之循环语句

    Shell编程之循环语句 学习目标: 掌握for循环语句编程 掌握while循环语句编程 目录结构: For循环语句 l  读取不同的变量值,以逐个执行同一组命令 l  For语句结构 for 变量名 ...

  4. shell中的循环

    shell中的循环 for循环 类似于C语言的步长控制 例如: ;i<=;i++)); ); done 将1到10,依次乘以4,然后打印出来. 这里顺便提一下,shell里面表达式的计算,可以有 ...

  5. shell中for循环

    shell中for循环总结 最常用的就是遍历操作某一类文件,比如批量建索引. for i in `ls` do samtools faidx $i done 注意:for末尾不需要冒号(:),循环的代 ...

  6. shell中for循环总结

    关于shell中的for循环用法很多,一直想总结一下,今天网上看到上一篇关于for循环用法的总结,感觉很全面,所以就转过来研究研究,嘿嘿... 1. for((i=1;i<=10;i++));d ...

  7. shell脚本学习-循环

    跟着RUNOOB网站的教程学习的笔记 for循环 与其他编程语言类似,shell支持for循环. for循环一般格式为: for var in item1 item2 ... itemN do com ...

  8. shell的for循环

    与其他编程语言类似,Shell支持for循环. for循环一般格式为: for 变量 in 列表 do command1 command2 ... commandN done 列表是一组值(数字.字符 ...

  9. Shell中的循环语句实例

    1.for循环语句实例1.1 最基本的for循环 #!/bin/bash for x in one two three four do     echo number $x done 注:" ...

随机推荐

  1. centos下安装visual studio code-(来自官网)

    (https://code.visualstudio.com/docs/setup/linux) Running VS Code on Linux Installation 安装完成后可执行:$cod ...

  2. S11 Linux系统管理命令

    11.1 lsof:查看进程打开的文件 11.2 uptime:显示系统的运行时间及负载 11.3 free:查看系统内存信息 11.4 iftop:动态显示网络接口流量信息 11.5 vmstat: ...

  3. gpcj-07.为什么是连锁零售类公司

    1.量化分析的真面目 本课的目的: ·理解零售类公司价值分析的逻辑·学会量化分析公司的思路和原理前言的前沿 和大部分投资者不同,我们的投资核心之一,就是从下而上的分析.宏观经济对我们公司分析影响极少. ...

  4. VS Code 安装后的一些配置项

    说明: 个人一直使用Notepad++作为日常文本编辑器,由于之前出现的某个原因,故决定改用VS Code. •设置中文字体 • 输入快捷键 Ctrl+Shift+P • 输入 Configure D ...

  5. Python爬虫-Scrapy框架的工作原理

    Scrapy框架工作原理 Scrapy框架架构图 Scrapy框架主要由六大组件组成,分别为: ​ 调度器(Scheduler),下载器(Downler),爬虫(Spiders),中间件(Middwa ...

  6. Guava Cache,Java本地内存缓存使用实践

    Guava Cache,网上介绍很多,我就不赘述了. 分享一篇好的文章: Guava Cache内存缓存使用实践-定时异步刷新及简单抽象封装 Google Guava 3-缓存 在原作者基础上,我做了 ...

  7. GPU 硬件虚拟化Hardware Virtualization

    GPU 硬件虚拟化Hardware Virtualization 1. Principles 一个物理GPU可以虚拟化为多个vGPUs.VMs可以绑定到vGPUs以直接访问一些物理GPU资源. 2. ...

  8. HiCar技术概述

    HiCar技术概述 HUAWEI HiCar(以下简称 HiCar)是华为提供的人-车-家全场景智慧互联(HUAWEI HiCar Smart Connection)解决方案,具备如下特点: 安全交互 ...

  9. MindInsight张量可视设计介绍

    MindInsight张量可视设计介绍 特性背景 张量可视,能够帮助用户直观查看训练过程中的Tensor值,既支持以直方图的形式呈现Tensor的变化趋势,也支持查看某次step的具体Tensor值. ...

  10. 使用NVIDIA A100 TF32获得即时加速

    使用NVIDIA A100 TF32获得即时加速 NVIDIA A100带来了我们公司历史上最大的单代性能增长.这是一个新的结构创新,这是一个多功能的支持,这是一个多功能的结构支持.TF32是用于深度 ...