如果给 switch 的最初的参数以 - 开始,则它们被作为选项来对待。当前支持下列选项:
为 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。
Copyright © 1993 The Regents of the University of California. Copyright © 1994-1997 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.