switch(3tcl)

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

跋
本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃：https://github.com/man-pages-zh/manpages-zh