开源文档分享

switch

Section: Tcl Built-In Commands (3tcl)
Updated: 7.0
查看本页索引 返回目录



 

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 来对待。

patternbody 参数提供了两个语法。第一个是对于每个模式和命令使用一个独立的参数;如果在一些模式或命令上需要替换,则这种形式是很方便的。第二种形式是把所有的模式和命令放在一起作为一个单一的参数;这个参数必须有正确的列表结构,它的元素是模式和命令。第二种形式适合于构造多行 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 (链接不可用)  
本页面中文版由中文 man 手册页计划提供。
中文 man 手册页计划:https://github.com/man-pages-zh/manpages-zh


 

Index

NAME
总览 SYNOPSIS
描述 DESCRIPTION
参见 SEE ALSO
关键字 KEYWORDS
[中文版维护人]
[中文版最新更新]
《中国 Linux 论坛 man 手册页翻译计划》:

This document was created by man2html, using the manual pages.
Time: 03:17:10 GMT, July 01, 2024