shell之select语句

1. select in 语句

select in 循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能

select in 是 Shell 独有的一种循环,非常适合终端(Terminal)这样的交互场景,C语言、C++、Java、Python、C# 等其它编程语言中是没有的

Shell select in 循环的用法如下:

select variable in value_list
do
    statements
done

variable 表示变量,value_list 表示取值列表,in 是 Shell 中的关键字

我们先来看一个 select in 循环的例子

[root@server1 mnt]# sh test.sh 
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 1
Linux
#? 2
Windows
#? 
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 
You have selected Windows
[root@server1 mnt]# cat test.sh 
#!/bin/bash
echo "What is your favourite OS?"
select name in "Linux" "Windows" "Mac OS" "UNIX" "Android"
do
    echo $name
done
echo "You have selected $name"

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

运行到 select 语句后,取值列表 value_list 中的内容会以菜单的形式显示出来,用户输入菜单编号,就表示选中了某个值,这个值就会赋给变量 variable,然后再执行循环体中的 statements(do 和 done 之间的部分)。
每次循环时 select 都会要求用户输入菜单编号,并使用环境变量 PS3 的值作为提示符,PS3 的默认值为#?,修改 PS3 的值就可以修改提示符。
如果用户输入的菜单编号不在范围之内,例如上面我们输入的 9,那么就会给 variable 赋一个空值;如果用户输入一个空值(什么也不输入,直接回车),会重新显示一遍菜单

select in 通常和 case in 一起使用,在用户输入不同的编号时可以做出不同的反应

[root@server1 mnt]# sh test.sh 
What is your favourite OS?
1) Linux
2) Windows
3) Mac OS
4) UNIX
5) Android
#? 1
Linux是一个类UNIX操作系统,它开源免费,运行在各种服务器设备和嵌入式设备。
[root@server1 mnt]# cat test.sh 
#!/bin/bash
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 "Windows是微软开发的个人电脑操作系统,它是闭源收费的。"
            break
            ;;
        "Mac OS")
            echo "Mac OS是苹果公司基于UNIX开发的一款图形界面操作系统,只能运行与苹果提供的硬件之上。"
            break
            ;;
        "UNIX")
            echo "UNIX是操作系统的开山鼻祖,现在已经逐渐退出历史舞台,只应用在特殊场合。"
            break
            ;;
        "Android")
            echo "Android是由Google开发的手机操作系统,目前已经占据了70%的市场份额。"
            break
            ;;
        *)
            echo "输入错误,请重新输入"
    esac
done
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: shell select语句是一种用于交互式选择的语句,它可以让用户从一组选项中进行选择,并根据用户的选择执行相应的操作。在shell脚本中,select语句通常与case语句一起使用,用于实现菜单式的交互操作。select语句的基本语法如下: select var in list do commands done 其中,var是一个变量名,用于存储用户选择的选项编号;list是一个选项列表,可以是一个数组、一个命令输出的结果或者是一组字符串;commands是在用户选择后要执行的命令序列。在执行select语句时,会先输出选项列表,然后等待用户输入选项编号,输入后会执行相应的命令序列,直到用户输入q退出为止。 ### 回答2: shell中的select语句是一种用于创建用户选择菜单的结构。它允许用户从一系列选项中选择一个选项,并且可以根据用户的选择执行不同的操作。 在shell脚本中,使用select关键字来定义select语句。其语法如下: ``` select 变量 in 选项列表 do 代码块 done ``` 其中变量表示用户选择的编号,选项列表是一组用空格分隔的选项。代码块中的命令将根据用户选择的选项执行。 当用户运行脚本时,选项列表会显示在屏幕上,并要求用户输入一个数字来选择相应的选项。然后,脚本将执行与所选选项相关联的命令。 以下是一个使用select语句的示例: ```bash #!/bin/bash select option in "Option 1" "Option 2" "Option 3" "Quit" do case $option in "Option 1") echo "You selected Option 1" ;; "Option 2") echo "You selected Option 2" ;; "Option 3") echo "You selected Option 3" ;; "Quit") echo "Exiting..." break ;; *) echo "Invalid selection!" ;; esac done ``` 在上述示例中,用户将看到一个菜单显示选项1、选项2、选项3和退出。用户可以输入相应的数字来选择选项。然后,根据所选选项,将执行相应的代码块。 select语句在编写需要用户交互的shell脚本时非常有用。它可以使用户界面更加友好,同时还可以为用户提供多个选项来选择。 ### 回答3: Shell中的select语句是一种用于创建菜单选择的结构,它允许用户通过键盘输入来选择菜单中的选项。它的基本语法如下: ```shell select varname in list do commands done ``` 其中,varname是用户选择菜单选项后变量的名称,list是菜单选项列表。在用户选择一个选项之后,varname将会保存选项的值。 在循环开始之前,菜单选项会被打印出来,每个选项都会被编号。用户可以通过输入相应的数字来选择选项。如果用户输入的不是一个有效的数字,shell会重复地显示菜单并提示用户再次输入。 在do和done之间的commands部分是用户选择选项后要执行的命令。这里可以是任意有效的shell命令。通常,我们会在这里执行一系列操作,例如根据用户选择调用不同的函数、执行不同的任务等等。 select语句的使用可以提供一个交互式的菜单界面,使得用户能够更方便地进行选择。它在编写Shell脚本时非常有用,特别是当需要提供一些选项供用户选择时。使用select语句可以减少繁琐的手动输入,提高用户体验,并且可以更容易地检测和处理用户的输入错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值