Provided by: manpages-zh_1.5.1-1_all bug

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