Shell中select in的具体使用

 更新时间:2023年06月09日 11:17:25   作者:银痕  
本文主要介绍了Shell中select in的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

select in 用法

select in循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能。
select in 是shell独有的一种循环,非常适合终端(Terminal)这样的交互场景。这是其他语言所没有的。

用法:

select variable in value_list        #variable表示变量,value_list表示取值列表
do
    statements
done

1.#?用来提示用户输入菜单编号;^D表示按下Ctrl+D组合键,它的作用是结束select in循环
2.每次循环时,selevt都会要求用户输入菜单编号,并使用环境变量PS3的值作为提示符,PS3的默认值为#?,修改PS3的值就可以修改提示符
3.如果用户输入的菜单编号不在范围之内,那么就会给variable赋一个空值;如果用户输入一个空值,会重新显示一遍菜单

例1.

vim test.sh
#!/bin/bash
#test the usage of 'select in'.
echo "What is your favourite OS? "
select name in "Linux" "Windows" "Mac OS" "Unix" "Android"     '//“ ”可以省略'
do
        echo $name
done             ##此处不会自动跳出select in 循环,需要按ctrl+D跳出select in
echo "You have selected $name"

运行:

[root@server1 ~]# chmod u+x test.sh 
[root@server1 ~]# ./test.sh
What is your favourite OS? 
1) Linux
2) Windows
3) Mac OS
4) Unix
5) Android
#? 1
Linux
#?          '//按ctrl+D'
You have selected Linux

=======================================================

[root@server1 ~]# ./test.sh
What is your favourite OS? 
1) Linux
2) Windows
3) Mac OS
4) Unix
5) Android
#? 5
Android
#? 3
Mac OS
#? 2
Windows
#?      '//按ctrl+D'
You have selected Windows

select in 通常和 case in 搭配使用

例2:

#!/bin/bash
#"select in" is usually used with "case in" 
echo "What is your favourite OS? "
select name in "Linux" "Windows" "Mac OS" "Unix" "Android"
do
    case $name in
        "Linux")
          echo "Linux是一个类Unix操作系统,它开源免费"
          break
          ;;
        "Windows")
          echo "Mac OS是微软开发的个人电脑操作系统,它是闭源收费的"
          break
          ;;
        "Mac OS")
          echo "Mac OS是苹果公司开发的一款图形界面操作系统"
          break
          ;;
        "Unix")
          echo "Unix是操作系统的开山鼻祖,现在只应用在一些特殊场合"
          break
          ;;
        "Android")
          echo "Android是由Google开发的手机操作系统"
          break
          ;;
        *)
          echo "没有这个选项!"
          break
    esac
done

运行:

[root@server1 ~]# ./test2.sh
What is your favourite OS? 
1) Linux
2) Windows
3) Mac OS
4) Unix
5) Android
#? 1
Linux是一个类Unix操作系统,它开源免费

[root@server1 ~]# ./test2.sh
What is your favourite OS? 
1) Linux
2) Windows
3) Mac OS
4) Unix
5) Android
#? 2
Mac OS是微软开发的个人电脑操作系统,它是闭源收费的

[root@server1 ~]# ./test2.sh 
What is your favourite OS? 
1) Linux
2) Windows
3) Mac OS
4) Unix
5) Android
#? 5
Android是由Google开发的手机操作系统

到此这篇关于Shell中select in的具体使用的文章就介绍到这了,更多相关Shell select in内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • Shell 管道及执行顺序分析

    Shell 管道及执行顺序分析

    Shell 管道及执行顺序分析,需要的朋友可以参考下
    2013-01-01
  • linux系统上传下载命令rz和sz的教程

    linux系统上传下载命令rz和sz的教程

    这篇文章主要介绍了linux系统上传下载命令rz和sz的安装测试方法,需要的朋友可以参考下
    2018-01-01
  • Shell脚本实现自动输入密码登录服务器

    Shell脚本实现自动输入密码登录服务器

    这篇文章主要介绍了Shell脚本实现自动输入密码登录服务器,本文使用expect来实现这个需求,讲解了expect的安装及使用脚本,需要的朋友可以参考下
    2015-03-03
  • 一键备份gitolite服务器的Shell脚本

    一键备份gitolite服务器的Shell脚本

    这篇文章主要介绍了一键备份gitolite服务器的Shell脚本,需要的朋友可以参考下
    2014-09-09
  • 监控服务器swap并重启php的Shell脚本

    监控服务器swap并重启php的Shell脚本

    有一台服务器老是交换扇区占满然后失去响应,很烦,因为加载了以前别人写的一个php扩展,效率低,资源占用大,悲剧的是现在还没有可以替换的东西
    2014-03-03
  • linux whatis与whatis database 使用及查询方法(man使用实例)

    linux whatis与whatis database 使用及查询方法(man使用实例)

    在学习man命令时候,估计很多朋友都发现有man –f ,man –k 参数,可以查出很多数据。这些有的与man手册页相同,有些不是属于手册页的。它们数据怎么收集来的,并且whatis是怎么样工作的
    2015-10-10
  • 如何解决 shell 脚本重复执行的问题

    如何解决 shell 脚本重复执行的问题

    假如执行备份脚本消耗的时间远大于设置的备份间隔的话,系统会出现多个同时在执行脚本的Bash实例,会占用大量的系统资源,进而影响正常业务程序的运行,那如何解决上述shell脚本重复执行的问题呢,本文将要介绍的 flock 命令可以解决这个问题
    2021-05-05
  • Linux screen命令使用示例

    Linux screen命令使用示例

    Screen是一个全屏窗口管理器,它在多个进程(通常是交互式shell)之间多路传输物理终端。每个虚拟终端提供DEC VT100终端的功能,以及ANSI X3的几个控制功能,本文给大家分享Linux screen命令使用示例,感兴趣的朋友一起看看吧
    2023-03-03
  • Linux下科学计数法(e)转化为数字的方法

    Linux下科学计数法(e)转化为数字的方法

    这篇文章主要介绍了Linux下科学计数法(e)转化为数字的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • shell脚本两个文件关键行合并方式

    shell脚本两个文件关键行合并方式

    这篇文章主要介绍了shell脚本两个文件关键行合并方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05

最新评论