NAME¶
switch -
依据一个给定的值对多个脚本中的一个进行求值
总览 SYNOPSIS¶
switch ?
options?
string pattern body ?
pattern body
...?
switch ?
options?
string {
pattern body ?
pattern
body ...?}
描述 DESCRIPTION¶
switch 命令依次针对每个
pattern
(模式)参数匹配它的
string
参数。如果它发现一个
pattern 匹配
string,则立即通过把跟随在(这个模式)后面的
body 参数递归的传递给
Tcl
解释器来求值它,并返回这次求值的结果。如果最后的
pattern 参数是
default,则它匹配所有的东西。如果没有
pattern 参数匹配
string
并且没有给出缺省,则
switch
命令返回一个空串。
如果给
switch
的最初的参数以
-
开始,则它们被作为选项来对待。当前支持下列选项:
- -exact
- 当与一个模式比较
string
的时候,使用精确匹配。这是缺省的。
- -glob
- 当与一个模式比较
string
的时候,使用通配符式样的匹配(与
string match
命令所实现的相同)。
- -regexp
- 当与一个模式比较
string
的时候,使用正则表达式匹配(在
re_syntax
参考页中描述)。
- --
- 选项结束的标志。此后的参数即使以
- 开始仍被作为 string
来对待。
为
pattern 和
body
参数提供了两个语法。第一个是对于每个模式和命令使用一个独立的参数;如果在一些模式或命令上需要替换,则这种形式是很方便的。第二种形式是把所有的模式和命令放在一起作为一个单一的参数;这个参数必须有正确的列表结构,它的元素是模式和命令。第二种形式适合于构造多行
switch
命令,因为花括号包围着所有元素,所以没有必要在每行结束之处包含一个反斜杠。
在第二种形式中因为
pattern参数在花括号中,所以在它们上不进行命令和变量替换;这使得第二种形式的行为在一些情况下与第一种形式不同。
如果指定一个
body
为``
-'',则意味着给下一个模式的
body
也被用于这个模式(如果下一个模式也有一个执行体“
-”则使用它后面的这个执行体,以此类推)。这个特征使在多个模式之间共享一个单一的
body 成为可能。
在
switch
命令放置注释要注意。注释只能放置在一个模式的执行体中,而不能与模式混合。
下面是
switch
命令的一些例子:
switch abc a - b {format 1} abc {format 2} default {format 3}
将返回
2,
switch -regexp aaab {
^a.*b$ -
b {format 1}
a* {format 2}
default {format 3}
}
将返回
1, 而
switch xyz {
a
-
b
{
# Correct Comment Placement
format 1
}
a*
{format 2}
default
{format 3}
}
将返回
3.
参见 SEE ALSO¶
for(n), if(n), regexp(n)
关键字 KEYWORDS¶
switch, match, regular expression
[中文版维护人]¶
寒蝉退士
[中文版最新更新]¶
2001/11/15
《中国 Linux 论坛 man
手册页翻译计划》:¶
http://cmpp.linuxforum.net