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. Python对比两个txt文件内容

    difflib模块作为python的标准库模块,无需安装,作用是比对文本之间的差异,且支持输出可读性比较强的html格式.#!coding=utf-8 # 2018-9-19 import sys i ...

  2. 10.8 ss:查看网络状态

    ss命令 是类似并将取代netstat的工具,它能用来查看网络状态信息,包括TCP.UDP连接.端口等.它的优点是能够显示更多更详细的有关网络连接状态的信息,而且比netstat更快速更高效.    ...

  3. 第一章 DevOps概述

    什么是软件开发 软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程. 软件开发是一项包括需求捕捉,需求分析,实现和测试的系统工程 软件开发有哪些困难? 软件开发的本质困难 复杂性 不可见性 ...

  4. Spring 是什么?

    概述 Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好.易于测试.可重用的代码. Spring 框架是一个开源的 Ja ...

  5. 3D-LaneNet:端到端三维多车道检测ICCV2019

    3D-LaneNet:端到端三维多车道检测ICCV2019 3D-LaneNet: End-to-End 3D Multiple Lane Detection 论文链接: http://openacc ...

  6. 第四代自动泊车从APA到AVP技术

    第四代自动泊车从APA到AVP技术 前言 自动泊车是指汽车自动泊车入位不需要人工控制,系统能够自动帮你将车辆停入车位,在倒车入库中可谓是驾驶者的一项利器.当我们找到一个理想的停车地点,只需轻轻启动按钮 ...

  7. CodeGen处理Synergy方法目录

    CodeGen处理Synergy方法目录 如果Synergy应用程序开发环境包括使用Synergy/DE xfServerPlus,则可以基于Synergy方法目录中包含的元数据生成代码.要启用此功能 ...

  8. 基于TensorRT优化的Machine Translation

    基于TensorRT优化的Machine Translation 机器翻译系统用于将文本从一种语言翻译成另一种语言.递归神经网络(RNN)是机器翻译中最流行的深度学习解决方案之一. TensorRT机 ...

  9. Git_远程仓库fork操作

    fork操作:当选择 fork,相当于自己有了一份原项目的拷贝,当然这个拷贝只是针对当时的项目文件,如果后续原项目文件发生改变,你必须通过其他的方式去同步. 使用场景:一般来说,不需要使用 fork ...

  10. 『言善信』Fiddler工具 — 13、Fiddler断点功能的使用详解

    目录 1.Fiddler断点的应用 2.断点的分类 3.设置全局断点 (1)设置before Requests全局断点: (2)设置After Responses全局断点: 4.设置局部断点 (1)设 ...