Shell编程select用法

Shell编程select用法

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中的关键字

 

例子如下:

[root@localhost select]# cat 01.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"

[root@localhost select]# sh 01.sh

What is your favourite OS?

1) Linux

2) Windows

3) Mac OS

4) UNIX

5) Android

 

#? 1                                   

# #?是用来提示用户输入菜单的编号(自己带的一个提示符),

#生成一个生成一个交互界面

Linux

#? 3

Mac OS

#? 4

UNIX

#? 5

Android

#? 6                            #我们发现6并没有结束它。

 

#? 2

Windows

#?                                 #直接回车,再显示一遍菜单,并没有结束

1) Linux

2) Windows

3) Mac OS

4) UNIX

5) Android

#?

You have selected Windows

 

#再按一遍Ctrl + d(select in的输入结束)就结束了

 

#?是用来提示用户输入菜单的编号

^D表示按下Ctrl+D组合键,它的作用是结束select in 循环

运行到select语句后,取值列表value_list中的内容会以菜单的形式显示出来,

用户输入菜单编号,就表示选中了某个值,

这个值就会赋给变量variable,

然后再执行循环体中的statements(do和done之间的部分)

每次循环时select都会要求用户输入菜单编号,

并使用环境变量PS3的值作为提示符

PS3的默认值为#?,修改PS3的值就可以修改提示符

如果用户输入的菜单编号不在范围之内,

例如上面我们输入9,那么就会给variable赋一个空值,

如果用户输入一个空值(什么也不输入,直接回车),会重新显示一遍菜单

 

我们常将select in和case in一起配合使用

 

 

[root@localhost select]# cat 02.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
             ;;
         "Window")
             echo "Windows是微软开发的个人电脑操作系统,它是闭源收费的。"
             break
             ;;
         "Mac OS")
             echo "Mac OS是苹果公司基于UNIX开发的一款图形界面操作系统,只运行在苹果提供的软件上。"
             break
            ;; 
         "UNIX")
             echo "UNIX是操作系统的开山鼻祖,现在已经逐渐退出历史舞台,只应用在特殊场合。"
             break
            ;;
         "Android")
             echo "Android是由Google开发的手机操作系统,目前已经占据了70%市场份额系统不过。"
             break
            ;;
         *)
             break
             ;;
    esac
done
echo "You have selected $name

[root@localhost select]# sh 02.sh

What is your favourite OS?

1) Linux

2) Windows

3) Mac OS

4) UNIX

5) Android

#? 1

Linux是一个类UNIX操作系统,它开源免费,运行在各种服务器设备和嵌入式设备。

You have selected Linux

[root@localhost select]# sh 02.sh

What is your favourite OS?

1) Linux

2) Windows

3) Mac OS

4) UNIX

5) Android

#? 4

UNIX是操作系统的开山鼻祖,现在已经逐渐退出历史舞台,只应用在特殊场合。

You have selected UNIX

 

发布了150 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43309149/article/details/104345832