tcl基本语法与指令

上传人:第*** 文档编号:34213458 上传时间:2018-02-22 格式:DOC 页数:34 大小:313KB
返回 下载 相关 举报
tcl基本语法与指令_第1页
第1页 / 共34页
tcl基本语法与指令_第2页
第2页 / 共34页
tcl基本语法与指令_第3页
第3页 / 共34页
tcl基本语法与指令_第4页
第4页 / 共34页
tcl基本语法与指令_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《tcl基本语法与指令》由会员分享,可在线阅读,更多相关《tcl基本语法与指令(34页珍藏版)》请在金锄头文库上搜索。

1、第 1 頁,共 36 頁TCL Tutorial基本語法與指令Original written by Rick In 2003Revision by maa In 2004/6第 2 頁,共 36 頁目錄一、TCL 簡介.3二、TCL 語法.4三、資料型態.9String 字串資料態.9List 串列資料型態.17Array 陣列資料型態.20四、控制結構.22If Then Else.23Switch.24While.26For.27Foreach.28Break 與 Continue.29Catch.29五、Procedure.30第 3 頁,共 36 頁六、TCL 內建指令.32第 4

2、頁,共 36 頁一、TCL 簡介TCL 的全名為 Tool Command Language,唸作”Tickle”,事實上它是一個Scripting Language(俗稱劇本語言或腳本語言) ,也是一個直譯器(Interpreter) 。TCL 語言有三個特色:1. 語法簡單,容易上手2. TCL 的身份如同 UNIX 裡的 Shell languages 像是 Bourne Shell (sh)、C Shell (csh)、Korn Shell (ksh) 與 Perl 一樣,用來執行與控制系統上的程式。TCL 具備足夠的程式化能力 (variable、flow control、proce

3、dure) 與存取檔案、程序 (Process) 及網路的功能,供組裝既有軟體元件以建立符合需求的新工具。3. 可內嵌 (embed) 到應用程式中,讓軟體使用者透過程式員提供的高階 TCL 指令,自訂應用程式的行為。除了上列三個主要特色外,底下所列的幾點也是 TCL 語言成功的原因: 跨平台,可在各種系統 (UNIX、Windows 、 Macintosh 等) 執行 TCL 程式 強大的字串處理能力常規表示式 (Regular Expressions) ,協助程式員使用表示式的規則或樣式 (pattern),用來搜尋、比對、粹取或是取代符合樣式的複雜字串。 可用 C 語言開發 TCL Ex

4、tension Library,擴充 TCL 的指令與能力,例如著名的 Tk extension 讓 TCL 擁有 GUI Programming 的功能、expect extension 用來開發可與應用程式互動式溝通的程式。 已有一大堆可在各式場合發揮效用的 package,諸如各種網路應用(ftp, http、email, dns, msn, icq 等) 、圖形化介面開發 (TK, BWidget, Tktable, SpecTCL, VisualTCL, ActiveState KOMODO)、物件導向程式開發 (incrTcl, XOTcl, SNIT 等) 以及資料庫程式開發 (

5、MetaKit, daFT 等)。總結來說,TCL 語言就像是一瓶膠水一般,只要收集可資運用的應用程式與 TCL Package,在這些介面上塗塗抹抹,寫個簡單的 TCL Script (TCL 指令的集合),在短暫的時間內就可組裝出一個新工具來。因此寫 TCL Script 開發軟體的過程就像是在玩樂高積木一般。第 5 頁,共 36 頁二、TCL 語法TCL Script 可視為一個包含許多 TCL 指令 (TCL command) 的程式,一個 TCL 指令的基本語法為:command arg1 arg2 arg3 . 在 TCL 語言中,每行指令的第一個單字為指令名稱 空白字元用來分隔指

6、令名稱與各個個別的參數 個別指令的分隔是以分號與換行符號作為分隔符號 一個參數如果超過一個英文單字 (亦即字串中間穿插空白或其它符號 ),可用雙引號與大括號將這些元素組成 (grouping) 單一一個參數。使用雙引號與大括號的差別,在於 TCL 針對雙引號中的字串會做置換處理 (substitution),例如變數值的代換或是執行包含於字串中的 TCL 指令(使用中括號來表示),而對於大括號所括住的內容 TCL 則不會有這些置換處理。底下是一個簡單的 TCL Script 與執行後的輸出:# Demo1.tclputs stdout one; puts stdout twoset x 4se

7、t y 6puts $x + $y = expr $x + $yputs $x + $y = expr $x + $yputs HellonnTCL!% ./Demo1.tclonetwo4 + 6 = 10$x + $y = expr $x + $yHelloTCL!下表所列的符號在 TCL 語言裏有特殊的意義:第 6 頁,共 36 頁置換符號 (substitution symbols)$ 變數值置換符號。$ 符號用來取出指定變數的值。底下利用 set 指令設定 x 變數的值,並用 puts 指令輸出 x 的內容到 Console:set x 5puts stdout $x如上列最後一行程

8、式碼,取出變數值時需在變數名稱前加上 $ 符號。 命令置換符號。TCL 將中括號中的內容視為一個指令,會執行其中的指令並將結果傳回。例如 Demo1.tcl L5:puts $x + $y = expr $x + $y在做完 x 與 y 兩個變數的置換後,TCL 解譯器遇到中括號認為其中為另一個可執行的指令,指令名稱為 expr。在執行 expr 指令前,TCL 先將 x 與 y 值置換後,傳遞給 expr 指令並呼叫執行之。expr 指令用來做數學式子的運算,會負責剖析參數並做數學運算。群組 (grouping symbols)“” 雙引號可將多個元素組成單一一個參數,引號內的內容會被 TC

9、L 進行置換處理,包括變數置換與命令置換。 大括號的功能與雙引號相同,但 TCL 不會對括號中的內容做任何解釋或處理,會照將括號中的內容視為一個參數,照本宣科原原本本地傳遞給指令去處理。例如 Demo1.tcl L6:puts $x + $y = expr $x + $y因為 TCL 對大括號中的內容不做任何處理,因此它的輸出為 $x + $y = expr $x + $y。另外,TCL 不會將大括號中的換行符號視為一個指令的結束,如果一個指令的參數很長時,我們就可以利用大括號這樣寫,把換行符號當成是參數的一部份:puts $x + $y =expr $x + $y 第 7 頁,共 36 頁其

10、它 和 C base 語言一樣,反斜線可將特殊的字元做跳脫處理。例如 n 代表換行符號。在 TCL 語言裏,如果一個指令超過一行,亦可在行尾使用反斜線做為續行的符號 (VB 指令如果超過一行,則是在行尾用底線符號代表續行)。分號與換行號 代表一個 TCL 指令的結束符號。# 註解符號。通常我們會在一行程式碼的第一個字元打上 # 符號,以代表本行程式為註解。注意!如果在 # 符號前有 TCL 指令,必須像這樣做:puts hello ;# here is comment亦即,在 # 符號前加上一個分號代表前面指令的結束。如果不這麼做,那 TCL 便會把 # 視為一個參數丟給 puts 指令去做處

11、理。變數TCL 變數的可以隨時建立不用事先宣告,變數名稱的取法也沒有任何限制,所以可以使用任何字元來為變數命名,甚至變數名跟指令名稱相同也沒問題。使用時只有一點要注意的,就是 TCL 是大小寫有別的語言。通常,我們以 set 指令來設定變數值:set x 5set y 6set PI 3.14set PI*2 6.28 ;# 注意!變數名稱是 PI*2puts $PI*2set PITCL 的 set 指令除了設定變數值的用途外,也可以用來取出變數的內容,如上列程式最後一行使用 set 指令取出 PI 的值 (注意!這邊不用在變數名稱前加上 $ 符號 )。unset 指令用來刪除一個或多個變數

12、,來釋放記憶體空間:unset x y PI第 8 頁,共 36 頁我們可以使用 info exists 指令來檢查變數是否存在。例如 incr 指令使用時,變數必須先建立才能為變數進行加法運算。此時便可使用 info exists 先檢驗變數的存在:if !info exists counter set counter 0 else incr counter ;# counter 加 1TCL 在執行時會建立一些全域變數,可以利用 info global 列出有哪些全域變數:% info globalargv argv0 tcl_version tcl_interactive var aut

13、o_oldpath errorCode auto_path errorInfo unknown_handlers unknown_handler_order auto_index env tcl_patchLevel argc tcl_libPath _ tcl_platform tcl_library其中幾個比較常用的,像是 argc 存放程式的命令列參數個數,argv0 是目前執行的 TCL Script 名稱,argv 則是存放所有命令列參數的 list;env 陣列存放系統的環境變數,而 tcl_version 會告訴你目前的 TCL 版本為何。置換與群組處理 (Substitutio

14、n and Grouping)底下是 TCL 置換處理與群組的幾點規則整理: TCL 指令的參數是以空白字元分隔,可以使用雙引號或大括號將多個元素組成一個參數。 如果是以大括號組出一個參數,TCL 不會對括住的內容進行任何置換,在對應的結束大括號出現前,任何字元都將視為參數的一部份,包含換行符號、分號或是內部巢狀的大括號。 如果是以雙引號組出一個參數,則在對應的結束雙引號出現前,雙引號中的內容會被 TCL 進行置換動作。 如果參數或是雙引號內的單字是以變數符號 $ 為開頭,則 TCL 為會進行變數的置換。 如果參數或是雙引號中有中括號,則在對應的中括號出現前,TCL 會對中第 9 頁,共 36 頁括號中的內容進行指令的置換。 因為 TCL 是以空白字元作為參數分隔符號,因此要避免下列的錯誤:if $x 1puts $x 在此加上一個空白字元,隔開 if 指令的第二及第三個參數。TCL 的數學運算子- ! 減號(Unary minus) / NOT 位元運算(Bit-wise not) / NOT布林邏輯運算(Log

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号