table of contents
switch(3tcl) | Tcl Built-In Commands | 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}
switch -regexp aaab { ^a.*b$ - b {format 1} a* {format 2} default {format 3} }
switch xyz { a - b { # Correct Comment Placement format 1 } a* {format 2} default {format 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
7.0 | Tcl |