TCL Tutorial
基本語法與指令
Original written by Rick In 2003
Revision by maa In 2004/6
联系人:殷师傅 QQ:860600036
目錄
一、TCL 簡介 (3)
二、TCL 語法 (4)
三、資料型態 (9)
String 字串資料態 (9)
List 串列資料型態 (17)
Array 陣列資料型態 (20)
四、控制結構 (22)
If Then Else (23)
Switch (24)
tickleWhile (26)
For (27)
Foreach (28)
Break 與Continue (29)
Catch (29)
五、Procedure (30)
六、TCL 內建指令 (32)
联系人:殷师傅 QQ:860600036
一、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、procedure) 與存取檔案、程序 (Process) 及網路的功能,供組裝既有軟體元件以建立符合需求的新工具。
3. 可內嵌 (embed) 到應用程式中,讓軟體使用者透過程式員提供的高階 TCL 指令,自訂應用程
式的行為。
除了上列三個主要特外,底下所列的幾點也是 TCL 語言成功的原因:
跨平台,可在各種系統 (UNIX、Windows、Macintosh 等) 執行 TCL 程式
強大的字串處理能力『常規表示式 (Regular Expressions)』,協助程式員使用表示式的規則或樣式 (pattern),用來搜尋、比對、粹取或是取代符合樣式的複雜字串。
可用 C 語言開發TCL Extension Library,擴充 TCL 的指令與能力,例如著名的 Tk extension 讓 TCL 擁有 GUI Programming 的功能、expect extension用來開發可與應用程式互動式溝通的程式。
已有一大堆可在各式場合發揮效用的 package,諸如各種網路應用(ftp, http、email, dns, msn, 联系人:殷师傅 QQ:860600036
icq 等)、圖形化介面開發 (TK, BWidget, Tktable, SpecTCL, VisualTCL, ActiveState KOMODO)、物件導向程式開發(incrTcl, XOTcl, SNIT 等) 以及資料庫程式開發 (MetaKit, daFT 等)。
總結來說,TCL 語言就像是一瓶膠水一般,只要收集可資運用的應用程式與 TCL Package,在這些介面上塗塗抹抹,寫個簡單的 TCL Script (TCL 指令的集合),在短暫的時間內就可組裝出一個新工具來。因此寫 TCL Script 開發軟體的過程就像是在玩樂高積木一般。
联系人:殷师傅 QQ:860600036
二、TCL 語法
TCL Script 可視為一個包含許多 TCL 指令 (TCL command) 的程式,一個 TCL 指令的基本語法為:
command arg1 arg2 arg3 ….
在 TCL 語言中,每行指令的第一個單字為指令名稱
空白字元用來分隔指令名稱與各個個別的參數
個別指令的分隔是以分號與換行符號作為分隔符號
一個參數如果超過一個英文單字(亦即字串中間穿插空白或其它符號),可用雙引號與大括號將這些元素組成 (grouping) 單一一個參數。使用雙引號與大括號的差別,在於TCL針對雙引號中的字串會做置換處理 (substitution),例如變數值的代換或是執行包含於字串中的 TCL 指令(使用中括號來表示),而對於大括號所括住的內容 TCL則不會有這些置換處理。
底下是一個簡單的 TCL Script 與執行後的輸出:
# l
puts stdout one; puts stdout two
set x 4
set y 6
puts "$x + $y = [expr $x + $y]"
puts {$x + $y = [expr $x + $y]}
puts "Hello\n\nTCL!"
% ./l
one
two
4 + 6 = 10
$x + $y = [expr $x + $y]
联系人:殷师傅 QQ:860600036
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论