Linux Bash Shell学习(十二):流程控制——select
2009-12-29 21:57
716 查看
本文也即《Learning the bash Shell》3rd Edition的第五章Flow Control之读书笔记之四,但我们将不限于此。flow control是任何编程语言中很常用的部分,也包括了case。在这里,我们将继续学习他们。
select和其他流控制不一样,在C这类变成语言中没有类似的语句(C中的select用于socket,是完全不同的含义,不是流控制)。格式如下:
select
name
[in
list
]
do
statements that can use $name...
done
和for的格式相似,有和for一样,可以删除in list,即使用缺省的in $@。通过select,我们很容易创建菜单:
执行时的时候,会根据list给出菜单,用户选择之后执行statement,所选择的,放置在$name,执行完之后,再次给出菜单,等等用户执行,一直循环下去,用户如果向跳出循环,可以使用break,下面是一个基本例子:
# select Test Sample
# Test 1: Basic Usage Test
function test
{
echo 'select test 1'
mystack='a 123 red '
select entry in $mystack; do
#如果是有效的选择,则$entry中带有list中的值,如果是无效的选择,则为null,因此经常会根据此判断选择是否有效,例如用if [ $entry ]。
if [ $entry ]; then
echo "You select the choice '$entry'"
break
**注:由于select是个循环,通过break来跳出循环
else
echo "Invaild selection"
fi
done
}
test
执行结果
$./select-test
select test 1 **注:下面开始显示list中元素,并以菜单的方式出现*
1) a
2) 123
3) red
#?
h **注:出现提示符号#?,等待用户输入选择,如果直接回车,则再次显示菜单
Invaild selection
#?
3
You select the chioce 'red'
在Linux Bash Shell学习(五):特殊文件、别名、选项和参数
中对于提示符,提到了PS1和PS2,在select中,给出的提示符,即上面例子中的#?就是PS3,我们可以在shell中对PS3进行重新定义。例如PS3=”Please select a choice : ”
执行完statement,将继续出现提示符,等待下次输入,如果需要从select的循环中退出来,使用break。如果直接键入[回车],则再次显示菜单。
相关链接: 我的Linux操作相关文章
select和其他流控制不一样,在C这类变成语言中没有类似的语句(C中的select用于socket,是完全不同的含义,不是流控制)。格式如下:
select
name
[in
list
]
do
statements that can use $name...
done
和for的格式相似,有和for一样,可以删除in list,即使用缺省的in $@。通过select,我们很容易创建菜单:
执行时的时候,会根据list给出菜单,用户选择之后执行statement,所选择的,放置在$name,执行完之后,再次给出菜单,等等用户执行,一直循环下去,用户如果向跳出循环,可以使用break,下面是一个基本例子:
# select Test Sample
# Test 1: Basic Usage Test
function test
{
echo 'select test 1'
mystack='a 123 red '
select entry in $mystack; do
#如果是有效的选择,则$entry中带有list中的值,如果是无效的选择,则为null,因此经常会根据此判断选择是否有效,例如用if [ $entry ]。
if [ $entry ]; then
echo "You select the choice '$entry'"
break
**注:由于select是个循环,通过break来跳出循环
else
echo "Invaild selection"
fi
done
}
test
执行结果
$./select-test
select test 1 **注:下面开始显示list中元素,并以菜单的方式出现*
1) a
2) 123
3) red
#?
h **注:出现提示符号#?,等待用户输入选择,如果直接回车,则再次显示菜单
Invaild selection
#?
3
You select the chioce 'red'
在Linux Bash Shell学习(五):特殊文件、别名、选项和参数
中对于提示符,提到了PS1和PS2,在select中,给出的提示符,即上面例子中的#?就是PS3,我们可以在shell中对PS3进行重新定义。例如PS3=”Please select a choice : ”
执行完statement,将继续出现提示符,等待下次输入,如果需要从select的循环中退出来,使用break。如果直接键入[回车],则再次显示菜单。
相关链接: 我的Linux操作相关文章
相关文章推荐
- Linux Bash Shell学习(十一):流程控制——case
- Linux Bash Shell学习(十三):流程控制——while/util
- Linux Bash Shell学习(九):流程控制——if/else
- Linux Bash Shell学习(十):流程控制——for
- Linux Bash Shell学习(九):流程控制——if/else
- 【Linux学习笔记】Shell 基础(3) — Shell流程控制语句
- Linux学习之Shell--第五天:Shell流程控制-循环语句while
- Linux基本功十二:shell脚本流程控制
- Linux学习之Shell--第四天:Shell流程控制-循环语句for
- linux bash shell 流程控制(if/else )
- Linux学习之Shell--第四天:Shell流程控制-循环语句for
- Linux学习之Shell--第五天:Shell流程控制-循环语句while
- shell-bash学习04读取输入、分隔符、流程控制
- Linux Bash Shell学习(三):基本I/O操作、特殊字符、控制键和帮助
- Shell学习笔记(11)-流程控制之select、until语句
- linux学习之shell的流程控制
- Linux进阶之bash编程(流程控制-case,select)
- Linux学习之Shell--第三天:Shell流程控制-if语句
- Linux学习之Shell--第三天:Shell流程控制-if语句
- 10个 Linux/Unix下 Bash 和 KSH shell 的作业控制实例