華為TCL培訓(xùn)教程(全)_第1頁
華為TCL培訓(xùn)教程(全)_第2頁
華為TCL培訓(xùn)教程(全)_第3頁
華為TCL培訓(xùn)教程(全)_第4頁
華為TCL培訓(xùn)教程(全)_第5頁
已閱讀5頁,還剩78頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、TCL培訓(xùn)教程(全) 華為內(nèi)部資料 DATE M/d/yyyy 9/9/2022版權(quán)所有,好好利用第page * MERGEFORMAT83頁,共numpages * MERGEFORMAT83頁TCL培培訓(xùn)教程程(全)(內(nèi)部使使用)深圳市華華為技術(shù)術(shù)有限公公司目 錄錄TOC o 1-3 h z u HYPERLINK l _Toc255374099 1引言 PAGEREF _Toc255374099 h 66 HYPERLINK l _Toc255374100 2語法 PAGEREF _Toc255374100 h 77 HYPERLINK l _Toc255374101 2.1腳腳本、命命

2、令和單單詞符號號 PAGEREF _Toc255374101 h 7 HYPERLINK l _Toc255374102 2.2置置換(ssubsstittutiion) PAGEREF _Toc255374102 h 7 HYPERLINK l _Toc255374103 2.2.1變量量置換(varriabble subbtittutiion) PAGEREF _Toc255374103 h 8 HYPERLINK l _Toc255374104 2.2.2命令令置換(commmannd ssubsstittutiion) PAGEREF _Toc255374104 h 8 HYPERLI

3、NK l _Toc255374105 2.2.3反斜斜杠置換換(baacksslassh ssubsstittutiion) PAGEREF _Toc255374105 h 9 HYPERLINK l _Toc255374106 2.2.4雙引引號和花花括號 PAGEREF _Toc255374106 h 110 HYPERLINK l _Toc255374107 2.3注注釋 PAGEREF _Toc255374107 h 100 HYPERLINK l _Toc255374108 3變量 PAGEREF _Toc255374108 h 111 HYPERLINK l _Toc2553741

4、09 3.1簡簡單變量量 PAGEREF _Toc255374109 h 11 HYPERLINK l _Toc255374110 3.2數(shù)數(shù)組 PAGEREF _Toc255374110 h 122 HYPERLINK l _Toc255374111 3.3相相關(guān)命令令 PAGEREF _Toc255374111 h 12 HYPERLINK l _Toc255374112 3.3.1seet PAGEREF _Toc255374112 h 122 HYPERLINK l _Toc255374113 3.3.2unnsett PAGEREF _Toc255374113 h 12 HYPERL

5、INK l _Toc255374114 3.3.3apppennd和inccr PAGEREF _Toc255374114 h 133 HYPERLINK l _Toc255374115 4表達(dá)式式 PAGEREF _Toc255374115 h 13 HYPERLINK l _Toc255374116 4.1操操作數(shù) PAGEREF _Toc255374116 h 113 HYPERLINK l _Toc255374117 4.2運(yùn)運(yùn)算符和和優(yōu)先級級 PAGEREF _Toc255374117 h 14 HYPERLINK l _Toc255374118 1.1數(shù)數(shù)學(xué)函數(shù)數(shù) PAGEREF

6、_Toc255374118 h 14 HYPERLINK l _Toc255374119 2Liist PAGEREF _Toc255374119 h 116 HYPERLINK l _Toc255374120 2.1llistt命令 PAGEREF _Toc255374120 h 166 HYPERLINK l _Toc255374121 2.2cconccat命命令: PAGEREF _Toc255374121 h 16 HYPERLINK l _Toc255374122 2.3llinddex命命令 PAGEREF _Toc255374122 h 166 HYPERLINK l _Toc

7、255374123 2.4lllenngthh命令 PAGEREF _Toc255374123 h 166 HYPERLINK l _Toc255374124 2.5llinssertt命令 PAGEREF _Toc255374124 h 166 HYPERLINK l _Toc255374125 2.6llrepplacce命令令: PAGEREF _Toc255374125 h 17 HYPERLINK l _Toc255374126 2.7llrannge 命令: PAGEREF _Toc255374126 h 17 HYPERLINK l _Toc255374127 2.8llappp

8、endd命令: PAGEREF _Toc255374127 h 17 HYPERLINK l _Toc255374128 2.9llseaarchh 命令令: PAGEREF _Toc255374128 h 17 HYPERLINK l _Toc255374129 2.100lsoort命命令: PAGEREF _Toc255374129 h 18 HYPERLINK l _Toc255374130 2.111spllit命命令: PAGEREF _Toc255374130 h 18 HYPERLINK l _Toc255374131 2.122joiin命令令 PAGEREF _Toc255

9、374131 h 19 HYPERLINK l _Toc255374132 3控制流流 PAGEREF _Toc255374132 h 19 HYPERLINK l _Toc255374133 3.1iif命令令 PAGEREF _Toc255374133 h 19 HYPERLINK l _Toc255374134 3.2循循環(huán)命令令:whhilee 、forr、 fooreaach PAGEREF _Toc255374134 h 119 HYPERLINK l _Toc255374135 3.2.1whhilee命令 PAGEREF _Toc255374135 h 199 HYPERLIN

10、K l _Toc255374136 3.2.2foor命令令 PAGEREF _Toc255374136 h 20 HYPERLINK l _Toc255374137 3.2.3fooreaach命命令 PAGEREF _Toc255374137 h 200 HYPERLINK l _Toc255374138 3.2.4brreakk和conntinnue命命令 PAGEREF _Toc255374138 h 211 HYPERLINK l _Toc255374139 3.2.5swwitcch 命命令 PAGEREF _Toc255374139 h 211 HYPERLINK l _Toc2

11、55374140 3.3eevall命令 PAGEREF _Toc255374140 h 222 HYPERLINK l _Toc255374141 3.4ssourrce命命令 PAGEREF _Toc255374141 h 222 HYPERLINK l _Toc255374142 4過程(proocedduree) PAGEREF _Toc255374142 h 222 HYPERLINK l _Toc255374143 4.1過過程定義義和返回回值 PAGEREF _Toc255374143 h 222 HYPERLINK l _Toc255374144 4.2局局部變量量和全局局變量

12、 PAGEREF _Toc255374144 h 223 HYPERLINK l _Toc255374145 4.3缺缺省參數(shù)數(shù)和可變變個數(shù)參參數(shù) PAGEREF _Toc255374145 h 233 HYPERLINK l _Toc255374146 4.4引引用:uupvaar PAGEREF _Toc255374146 h 244 HYPERLINK l _Toc255374147 5字符串串操作 PAGEREF _Toc255374147 h 226 HYPERLINK l _Toc255374148 5.1fformmat命命令 PAGEREF _Toc255374148 h 26

13、6 HYPERLINK l _Toc255374149 5.2sscann命令 PAGEREF _Toc255374149 h 266 HYPERLINK l _Toc255374150 5.3rregeexp命命令 PAGEREF _Toc255374150 h 277 HYPERLINK l _Toc255374151 1.1rregssub命命令 PAGEREF _Toc255374151 h 288 HYPERLINK l _Toc255374152 1.2sstriing命命令 PAGEREF _Toc255374152 h 299 HYPERLINK l _Toc255374153

14、 1.2.1sttrinngcoompaare ?-nnocaase? ?-leengtth iint? sttrinng1 strringg2 PAGEREF _Toc255374153 h 299 HYPERLINK l _Toc255374154 1.2.2sttrinng eequaal ?-noocasse? ?-lenngthhintt? sttrinng1sstriing22 PAGEREF _Toc255374154 h 29 HYPERLINK l _Toc255374155 1.2.3sttrinngfiirsttstrringg1sttrinng2 ?sttarttind

15、dex? PAGEREF _Toc255374155 h 29 HYPERLINK l _Toc255374156 1.2.4sttrinng inddexsstriingccharrInddex PAGEREF _Toc255374156 h 330 HYPERLINK l _Toc255374157 1.2.5sttrinnglaast sstriing11 sttrinng2 ?staartiindeex? PAGEREF _Toc255374157 h 330 HYPERLINK l _Toc255374158 1.2.6sttrinngleengtth sttrinng PAGERE

16、F _Toc255374158 h 300 HYPERLINK l _Toc255374159 1.2.7sttrinngmaatchh ?-nnocaase? paatteernsstriing PAGEREF _Toc255374159 h 330 HYPERLINK l _Toc255374160 1.2.8sttrinngraangeestrringgfirrstllastt PAGEREF _Toc255374160 h 31 HYPERLINK l _Toc255374161 1.2.9sttrinngreepeaat strringg ccounnt PAGEREF _Toc25

17、5374161 h 311 HYPERLINK l _Toc255374162 1.2.10sstriingrrepllaceestrringgfirrstllastt ?neewsttrinng? PAGEREF _Toc255374162 h 31 HYPERLINK l _Toc255374163 1.2.11sstriingttoloowerrstrringg ?firrst? ?laast? PAGEREF _Toc255374163 h 31 HYPERLINK l _Toc255374164 1.2.12sstriingttouppperrstrringg ?fiirstt? ?

18、lasst? PAGEREF _Toc255374164 h 31 HYPERLINK l _Toc255374165 1.2.13sstriingttrimm strringg ?chharss? PAGEREF _Toc255374165 h 31 HYPERLINK l _Toc255374166 1.2.14sstriing triimleeftsstriing ?chharss? PAGEREF _Toc255374166 h32 HYPERLINK l _Toc255374167 1.2.15sstriingttrimmrigghtsstriing ?chaars? PAGEREF

19、 _Toc255374167 h 32 HYPERLINK l _Toc255374168 2文件訪訪問 PAGEREF _Toc255374168 h 322 HYPERLINK l _Toc255374169 2.1文文件名 PAGEREF _Toc255374169 h332 HYPERLINK l _Toc255374170 2.2基基本文件件輸入輸輸出命令令 PAGEREF _Toc255374170 h 32 HYPERLINK l _Toc255374171 2.3隨隨機(jī)文件件訪問 PAGEREF _Toc255374171 h 334 HYPERLINK l _Toc25537

20、4172 2.4當(dāng)當(dāng)前工作作目錄 PAGEREF _Toc255374172 h 334 HYPERLINK l _Toc255374173 2.5文文件操作作和獲取取文件信信息 PAGEREF _Toc255374173 h 355 HYPERLINK l _Toc255374174 3錯誤和和異常 PAGEREF _Toc255374174 h 339 HYPERLINK l _Toc255374175 3.1錯錯誤 PAGEREF _Toc255374175 h 400 HYPERLINK l _Toc255374176 3.2從從TCLL腳本中中產(chǎn)生錯錯誤 PAGEREF _Toc25

21、5374176 h 411 HYPERLINK l _Toc255374177 3.3使使用caatchh捕獲錯錯誤 PAGEREF _Toc255374177 h 411 HYPERLINK l _Toc255374178 3.4其其他異常常 PAGEREF _Toc255374178 h 42 HYPERLINK l _Toc255374179 1深入TTCL PAGEREF _Toc255374179 h 444 HYPERLINK l _Toc255374180 1.1查查詢數(shù)組組中的元元素 PAGEREF _Toc255374180 h 444 HYPERLINK l _Toc255

22、374181 1.2iinfoo命令 PAGEREF _Toc255374181 h 466 HYPERLINK l _Toc255374182 1.2.1變量量信息 PAGEREF _Toc255374182 h 446 HYPERLINK l _Toc255374183 1.1.1過程程信息 PAGEREF _Toc255374183 h 448 HYPERLINK l _Toc255374184 1.1.2命令令信息 PAGEREF _Toc255374184 h 449 HYPERLINK l _Toc255374185 1.1.3TCCL的版版本和庫庫 PAGEREF _Toc255

23、374185 h 49 HYPERLINK l _Toc255374186 1.1.4命令令的執(zhí)行行時間 PAGEREF _Toc255374186 h 449 HYPERLINK l _Toc255374187 1.1.5跟蹤蹤變量 PAGEREF _Toc255374187 h 550 HYPERLINK l _Toc255374188 1.1.6命令令的重命命名和刪刪除 PAGEREF _Toc255374188 h 533 HYPERLINK l _Toc255374189 1.1.7unnknoown命命令 PAGEREF _Toc255374189 h 533 HYPERLINK

24、l _Toc255374190 1.1.8自動動加載 PAGEREF _Toc255374190 h 554 HYPERLINK l _Toc255374191 2歷史記記錄 PAGEREF _Toc255374191 h 555 HYPERLINK l _Toc255374192 3TCLL和CC+ PAGEREF _Toc255374192 h 58 HYPERLINK l _Toc255374193 3.1生生成自己己的TCCLSHH PAGEREF _Toc255374193 h 58 HYPERLINK l _Toc255374194 3.2擴(kuò)擴(kuò)展自己己的命令令:方法法(一) PAG

25、EREF _Toc255374194 h 59 HYPERLINK l _Toc255374195 3.2.1編寫寫擴(kuò)展命命令對應(yīng)應(yīng)的C/C+過程 PAGEREF _Toc255374195 h 599 HYPERLINK l _Toc255374196 3.2.2注冊冊命令 PAGEREF _Toc255374196 h 661 HYPERLINK l _Toc255374197 3.2.3命令令返回值值和命令令對應(yīng)的的過程的的返回值值 PAGEREF _Toc255374197 h 62 HYPERLINK l _Toc255374198 3.3擴(kuò)擴(kuò)展自己己的命令令:方法法(二) PAGE

26、REF _Toc255374198 h 64 HYPERLINK l _Toc255374199 3.3.1Tccl_OObj結(jié)結(jié)構(gòu) PAGEREF _Toc255374199 h 644 HYPERLINK l _Toc255374200 3.3.2編寫寫擴(kuò)展命命令對應(yīng)應(yīng)的C/C+過程 PAGEREF _Toc255374200 h 666 HYPERLINK l _Toc255374201 3.3.3注冊冊命令 PAGEREF _Toc255374201 h 667 HYPERLINK l _Toc255374202 3.4利利用cllienntDaata參參數(shù)和ddeleetePProc

27、c參數(shù) PAGEREF _Toc255374202 h 677 HYPERLINK l _Toc255374203 3.5在在C/CC+應(yīng)應(yīng)用程序序中嵌入入TCLL PAGEREF _Toc255374203 h 71 HYPERLINK l _Toc255374204 4總結(jié) PAGEREF _Toc255374204 h 772TCL培培訓(xùn)教程程(全)關(guān)鍵詞:TCLL 摘要:本本文是TTCL教教材的第第三稿,前前兩稿分分別是TCL的使用和TCL培訓(xùn)教程。這一稿加入了不少內(nèi)容,是北研TCL興趣小組共同努力的結(jié)果。本文詳細(xì)介紹了TCL的各個方面,特別對利用CC+語言擴(kuò)展TCL命令作了詳細(xì)論述。

28、本文附有大量實(shí)例。縮略語清清單: TCCL TTooll Commmannd Laanguuagee 一種腳腳本語言言參考資料料清單:請?jiān)诒肀砀裰辛_羅列本文文檔所引引用的有有關(guān)參考考文獻(xiàn)名名稱、作作者、標(biāo)標(biāo)題、編編號、發(fā)發(fā)布日期期和出版版單位等等基本信信息。參考資料料清單名稱作者編號發(fā)布日期期查閱地點(diǎn)點(diǎn)或渠道道出版單位位(若不不為本公公司發(fā)布布的文獻(xiàn)獻(xiàn),請?zhí)钐顚懘肆辛校㏕cl andd Tkk TooolKKitJohnn KK.Ouusteerhoout98123559511619999自己的圖圖書Addiisonn Weesleey PPubllishhingg CoommppanyyTC

29、L的的使用陳旭盛自寫文檔檔TCL培培訓(xùn)教程程陳旭盛自寫文檔檔引言TCL(Toool CCommmandd Laanguuagee)是一一種解釋釋執(zhí)行的的腳本語語言(SScriiptiing Lannguaage)。它提供供了通用用的編程程能力:支持變變量、過過程和控控制結(jié)構(gòu)構(gòu);同時時TCLL還擁有有一個功功能強(qiáng)大大的固有有的核心心命令集集。由于TCCL的解解釋器是是用一個個CCC+語語言的過過程庫實(shí)實(shí)現(xiàn)的,因因此在某某種意義義上我們們又可以以把TCCL看作作一個CC庫,這這個庫中中有豐富富的用于于擴(kuò)展TTCL命命令的CCC+過程程和函數(shù)數(shù),可以以很容易易就在CCC+應(yīng)用用程序中中嵌入TTCL,

30、而而且每個個應(yīng)用程程序都可可以根據(jù)據(jù)自己的的需要對對TCLL語言進(jìn)進(jìn)行擴(kuò)展展。我們們可以針針對某一一特定應(yīng)應(yīng)用領(lǐng)域域?qū)CCL語言言的核心心命令集集進(jìn)行擴(kuò)擴(kuò)展,加加入適合合于自己己的應(yīng)用用領(lǐng)域的的擴(kuò)展命命令,如如果需要要,甚至至可以加加入新的的控制結(jié)結(jié)構(gòu),TTCL解解釋器將將把擴(kuò)展展命令和和擴(kuò)展控控制結(jié)構(gòu)構(gòu)與固有有命令和和固有控控制結(jié)構(gòu)構(gòu)同等看看待。擴(kuò)擴(kuò)展后的的TCLL語言將將可以繼繼承TCCL 核核心部分分的所有有功能,包包括核心心命令、控制結(jié)結(jié)構(gòu)、數(shù)數(shù)據(jù)類型型、對過過程的支支持等。根據(jù)需需要,我我們甚至至可以屏屏蔽掉TTCL的的某些固固有命令令和固有有控制結(jié)結(jié)構(gòu)。通通過對TTCL的的擴(kuò)展、

31、繼承或或屏蔽,用用戶用不不著象平平時定義義一種計(jì)計(jì)算機(jī)語語言那樣樣對詞法法、語法法、語義義、語用用等各方方面加以以定義,就就可以方方便的為為自己的的應(yīng)用領(lǐng)領(lǐng)域提供供一種功功能完備備的腳本本語言。TCL良良好的可可擴(kuò)展性性使得它它能很好好地適應(yīng)應(yīng)產(chǎn)品測測試的需需要,測測試任務(wù)務(wù)常常會會由于設(shè)設(shè)計(jì)和需需求的改改變而迅迅速改變變,往往往讓測試試人員疲疲于應(yīng)付付。利用用TCL的可擴(kuò)擴(kuò)展性,測測試人員員就可以以迅速繼繼承多種種新技術(shù)術(shù),并針針對產(chǎn)品品新特點(diǎn)點(diǎn)迅速推推出擴(kuò)展展TCLL命令集集,以用用于產(chǎn)品品的測試試中,可可以較容容易跟上上設(shè)計(jì)需需求的變變化。另外,因因?yàn)門CCL是一一種比CCC+ 語語言有

32、著著更高抽抽象層次次的語言言,使用用TCLL可以在在一種更更高的層層次上編編寫程序序,它屏屏蔽掉了了編寫CCC+程序序時必須須涉及到到的一些些較為煩煩瑣的細(xì)細(xì)節(jié),可可以大大大地提高高開發(fā)測測試?yán)牡乃俣?。而且,使用TCL語言寫的測試?yán)_本,即使作了修改,也用不著重新編譯就可以調(diào)用TCL解釋器直接執(zhí)行。可以省卻不少時間。TCL 目前已已成為自自動測試試中事實(shí)實(shí)上的標(biāo)標(biāo)準(zhǔn)。語法簡單的講講,TCCL語言言的語法法實(shí)際上上是一些些TCLL解釋器器怎樣對對TCLL命令進(jìn)進(jìn)行分析析的規(guī)則則的集合合。腳本、命命令和單單詞符號號一個TCCL腳本本可以包包含一個個或多個個命令。命令之之間必須須用換行行符或分分號

33、隔開開,下面面的兩個個腳本都都是合法法的:set a 1set b 22或set a 11;sett b 2TCL的的每一個個命令包包含一個個或幾個個單詞,第第一個單單詞代表表命令名名,另外外的單詞詞則是這這個命令令的參數(shù)數(shù),單詞詞之間必必須用空空格或TTAB鍵鍵隔開。TCL解解釋器對對一個命命令的求求值過程程分為兩兩部分:分析和和執(zhí)行。在分析析階段,TCL 解釋器運(yùn)用規(guī)則把命令分成一個個獨(dú)立的單詞,同時進(jìn)行必要的置換(substitution);在執(zhí)行階段,TCL 解釋器會把第一個單詞當(dāng)作命令名,并查看這個命令是否有定義,如果有定義就激活這個命令對應(yīng)的C/C+過程,并把所有的單詞作為參數(shù)傳遞

34、給該命令過程,讓命令過程進(jìn)行處理。置換(ssubsstittutiion)注:在下下面的所所有章節(jié)節(jié)的例子子中,為TCLL的命令令提示符符,輸入入命令回回車后,TCL會在接著的一行輸出命令執(zhí)行結(jié)果。/后面是我自己加上的說明,不是例子的一部分。TCL解解釋器在在分析命命令時,把把所有的的命令參參數(shù)都當(dāng)當(dāng)作字符符串看待待,例如如:%sett xx 110 /定義義變量xx,并把把x的值賦賦為10010%sett yy xx+1000 /y的值值是x+1000,而不不是我們們期望的的1100 x+1000上例的第第二個命命令中,x被看作字符串x+100的一部分,如果我們想使用x的值10 ,就必須告訴

35、TCL解釋器:我們在這里期望的是變量x的值,而非字符x。怎么告訴TCL解釋器呢,這就要用到TCL語言中提供的置換功能。TCL提提供三種種形式的的置換:變量置置換、命命令置換換和反斜斜杠置換換。每種種置換都都會導(dǎo)致致一個或或多個單單詞本身身被其他他的值所所代替。置換可可以發(fā)生生在包括括命令名名在內(nèi)的的每一個個單詞中中,而且且置換可可以嵌套套。變量置換換(vaariaablee suubtiituttionn)變量置換換由一個個符號號標(biāo)記,變變量置換換會導(dǎo)致致變量的的值插入入一個單單詞中。例如:%sett yy $x+1100 /y的的值是110+1100,這這里x被置換換成它的的值1001011

36、00這時,yy的值還還不是我我們想要要的值1110,而而是100+1000,因因?yàn)門CCL解釋釋器把110+1100看看成是一一個字符符串而不不是表達(dá)達(dá)式,yy要想得得到值1110,還還必須用用命令置置換,使使得TCCL會把把10+1000看成一一個表達(dá)達(dá)式并求求值。命令置換換(coommaand subbstiituttionn)命令置換換是由括起起來的TTCL命命令及其其參數(shù),命命令置換換會導(dǎo)致致某一個個命令的的所有或或部分單單詞被另另一個命命令的結(jié)結(jié)果所代代替。例例如:%sett yy eexprr $x+1100110y的值是是1100,這里里當(dāng)TCCL解釋釋器遇到到字符時時,它就就會

37、把隨隨后的eexprr作為一一個命令令名,從從而激活活與exxpr對對應(yīng)的CC/C+過程程,并把把exxpr和變量量置換后后得到的的100+1110傳傳遞給該該命令過過程進(jìn)行行處理。如果在上上例中我我們?nèi)サ舻簦悄敲碩CCL會報(bào)報(bào)錯。因因?yàn)樵谡G闆r況下,TTCL解解釋器只只把命令令行中的的第一個個單詞作作為看作作命令,其其他的單單詞都作作為普通通字符串串處理,看看作是命命令的參參數(shù)。注意,中必必須是一一個合法法的TCCL腳本本,長度度不限。中腳腳本的值值為最后后一個命命令的返返回值,例例如:%sett yy eexprr $x+1000;seet b 3300 /y的的值為3300,因因?yàn)?/p>

38、seet b 3300的的返回值值為3000300有了命令令置換,實(shí)實(shí)際上就就表示命命令之間間是可以以嵌套的的,即一一個命令令的結(jié)果果可以作作為別的的命令的的參數(shù)。反斜杠置置換(bbackkslaash subbstiituttionn)TCL語語言中的的反斜杠杠置換類類似于CC語言中中反斜杠杠的用法法,主要要用于在在單詞符符號中插插入諸如如換行符符、空格格、$等被TCCL解釋釋器當(dāng)作作特殊符符號對待待的字符符。例如如:set mssg muultiiplee sspacce /mmsg的的值為mmulttiplle sspacce。如果沒有有的話,TTCL會會報(bào)錯,因因?yàn)榻忉屷屍鲿寻堰@里最

39、最后兩個個單詞之之間的空空格認(rèn)為為是分隔隔符,于于是發(fā)現(xiàn)現(xiàn)sett命令有有多于兩兩個參數(shù)數(shù),從而而報(bào)錯。加入了了后,空空格不被被當(dāng)作分分隔符,multiple space被認(rèn)為是一個單詞(word)。又例如:%sett mssg monney $33333 nAArraay a2 /這個命命令的執(zhí)執(zhí)行結(jié)果果為:mmoneey $33333 Arrrayy a2這里的$不再被被當(dāng)作變變量置換換符。TCL支支持以下下的反斜斜杠置換換:Backkslaash Seqquennce Reeplaacedd Byya Auddiblle aalerrt (0 x77)b Baccksppacee (00

40、 x8)f Formm feeed (0 xxc)n Newwlinne (0 xaa)r Carrriaage retturnn (00 xd)t Tabb (00 x9)v Verrticcal tabb (00 xb)dddd Octtal vallue givven by dddd(onne, twoo, oor tthreee dds)xhhh Hexx vaaluee giivenn byy hhh(anny nnumbber of hss) nnewllinee sppacee A ssinggle spaace chaaraccterr.例如:sett a xx48 /對對應(yīng)

41、xhhhH /十六進(jìn)進(jìn)制的448正好好是722,對應(yīng)應(yīng)H sset aa 1110 /對應(yīng) ddddH /八進(jìn)制制的1110正好好是722,對應(yīng)應(yīng)Hsett aa eexprr / 對應(yīng)nnewllinee sppacee,一個個命令可可以用newwlinne轉(zhuǎn)到到下一行行繼續(xù) 22+35雙引號和和花括號號除了使用用反斜杠杠外,TTCL提提供另外外兩種方方法來使使得解釋釋器把分分隔符和和置換符符等特殊殊字符當(dāng)當(dāng)作普通通字符,而而不作特特殊處理理,這就就要使用用雙引號號和花括括號()。TCL解解釋器對對雙引號號中的各各種分隔隔符將不不作處理理,但是是對換行行符及和兩種置置換符會會照常處處理。例例

42、如:%sett xx 1100100%sett yy $x dddd 100 dddd而在花括括號中,所所有特殊殊字符都都將成為為普通字字符,失失去其特特殊意義義,TCCL解釋釋器不會會對其作作特殊處處理。%sett yy /n$xx exxpr 10+1000 /n$xx exxpr 10+1000 注釋TCL中中的注釋釋符是,和直到到所在行行結(jié)尾的的所有字字符都被被TCLL看作注注釋,TTCL解解釋器對對注釋將將不作任任何處理理。不過過,要注注意的是是,必須出出現(xiàn)在TTCL解解釋器期期望命令令的第一一個字符符出現(xiàn)的的地方,才才被當(dāng)作作注釋。例如:%Thhis is a ccommmentt

43、%sett a 1000 # NNot a commmenntwronng # arrgs: shhoulld bbe sett vaarNaame ?neewVaaluee?%sett b 1011 ; # thhis is a ccommmentt101第二行中中就不被被當(dāng)作注注釋符,因因?yàn)樗龀霈F(xiàn)在命命令的中中間,TTCL解解釋器把把它和后后面的字字符當(dāng)作作命令的的參數(shù)處處理,從從而導(dǎo)致致錯誤。而第四四行的就被作作為注釋釋,因?yàn)闉榍耙粋€個命令已已經(jīng)用一一個分號號結(jié)束,TCL解釋器期望下一個命令接著出現(xiàn)?,F(xiàn)在在這個位置出現(xiàn)#,隨后的字符就被當(dāng)作注釋了。變量TCL支支持兩種種類型的的變量:簡

44、單變變量和數(shù)數(shù)組。簡單變量量一個TCCL的簡簡單變量量包含兩兩個部分分:名字字和值。名字和和值都可可以是任任意字符符串。例例如一個個名為“13223 77&*: hddgg的變量量在TCCL中都都是合法法的。不不過為了了更好的的使用置置換(ssubsstittutiion),變量量名最好好按CC+語言中中標(biāo)識符符的命名名規(guī)則命命名。 TCLL解釋器器在分析析一個變變量置換換時,只只把從符號往往后直到到第一個個不是字字母、數(shù)數(shù)字或下下劃線的的字符之之間的單單詞符號號作為要要被置換換的變量量的名字字。例如如:% seet aa 222set a.11 44% seet b $a.112.1在最后一

45、一個命令令行,我我們希望望把變量量a.11的值付付給b,但是是TCLL解釋器器在分析析時只把把$符號之之后直到到第一個個不是字字母、數(shù)數(shù)字或下下劃線的的字符(這里是是.)之間間的單詞詞符號(這里是是a)當(dāng)作作要被置置換的變變量的名名字,所所以TCCL解釋釋器把a(bǔ)a置換成成2,然后后把字符符串“22.1”付給變量b。這顯然與我們的初衷不同。當(dāng)然,如如果變量量名中有有不是字字母、數(shù)數(shù)字或下下劃線的的字符,又又要用置置換,可可以用花花括號把把變量名名括起來來。例如如:%sett b $aa.14TCL中中的seet命令令能生成成一個變變量、也也能讀取取或改變變一個變變量的值值。例如如: seet a

46、a kdffj kkjdffkdfjj kjjdf如果變量量a還沒有有定義,這這個命令令將生成成變量a,并將將其值置置為kddfj kjddf,若若a已定義義,就簡簡單的把把a(bǔ)的值置置為kddfj kjddf。sett akdfjj kjjdf這個只有有一個參參數(shù)的sset命命令讀取取a的當(dāng)前前值kddfj kjddf。數(shù)組數(shù)組是一一些元素素的集合合。TCCL的數(shù)數(shù)組和普普通計(jì)算算機(jī)語言言中的數(shù)數(shù)組有很很大的區(qū)區(qū)別。在在TCLL中,不不能單獨(dú)獨(dú)聲明一一個數(shù)組組,數(shù)組組只能和和數(shù)組元元素一起起聲明。數(shù)組中中,數(shù)組組元素的的名字包包含兩部部分:數(shù)數(shù)組名和和數(shù)組中中元素的的名字,TCL中數(shù)組元素的名

47、字(下標(biāo)可以為任何字符串。例如: seet dday(monndayy) 11 seet dday(tueesdaay) 2第一個命命令生成成一個名名為daay的數(shù)數(shù)組,同同時在數(shù)數(shù)組中生生成一個個名為mmondday的的數(shù)組元元素,并并把值置置為1,第二二個命令令生成一一個名為為tueesdaay的數(shù)數(shù)組元素素,并把把值置為為2。簡單變量量的置換換已經(jīng)在在前一節(jié)節(jié)討論過過,這里里講一下下數(shù)組元元素的置置換。除除了有括括號之外外,數(shù)組組元素的的置換和和簡單變變量類似似。例: seet a moondaaysett daay(mmondday) 1sett b $dayy(moondaay) /

48、b的值值為1,即daay(mmondday)的值。sett cc $dayy($aa) /cc的值為為1,即daay(mmondday)的值。TCL不不能支持持復(fù)雜的的數(shù)據(jù)類類型,這是一一個很大大的缺憾憾,也是是TCLL受指責(zé)責(zé)很多的的方面。但是TTCL的的一個擴(kuò)擴(kuò)展ITTCL填填補(bǔ)了這這個缺憾憾。相關(guān)命令令set這個命令令在3.1已有有詳細(xì)介介紹。unseet這個命令令從解釋釋器中刪刪除變量量,它后后面可以以有任意意多個參參數(shù),每每個參數(shù)數(shù)是一個個變量名名,可以是是簡單變變量,也也可以是是數(shù)組或或數(shù)組元元素。例例如:% unnsett a b dday(monndayy)上面的語語句中刪刪除

49、了變變量a、b和數(shù)組組元素dday(monndayy),但但是數(shù)組組dayy并沒有有刪除,其其他元素素還存在在,要刪刪除整個個數(shù)組,只只需給出出數(shù)組的的名字。例如:%putts $dayy(moondaay)cant rreadd dday(monndayy): noo suuch eleemennt iin aarraay% puuts $daay(ttuessdayy)2%unsset dayy% puuts $daay(ttuessdayy)cant rreadd dday(tueesdaay): nno ssuchh vaariaableeappeend和和inccr這兩個命命令提供供

50、了改變變變量的的值的簡簡單手段段。appeend命命令把文文本加到到一個變變量的后后面,例例如:% seet ttxt heelloohelllo% apppennd ttxt ! Howw arre yyouhelllo! Howw arre yyouincrr命令把把一個變變量值加加上一個個整數(shù)。inccr要求求變量原原來的值值和新加加的值都都必須是是整數(shù)。%sett b aa% inncr bexpeecteed iinteegerr buut ggot a%sett b 22%inccr bb 35表達(dá)式TCL中中的表達(dá)達(dá)式類似似于ANNSI C的表表達(dá)式。表達(dá)式式由操作作數(shù)和操操作符

51、構(gòu)構(gòu)成,下下面分別別介紹。操作數(shù)TCL表表達(dá)式的的操作數(shù)數(shù)通常是是整數(shù)或或?qū)崝?shù)。整數(shù)一一般是十十進(jìn)制的的,但如如果整數(shù)數(shù)的第一一個字符符是0(zerro),那那么TCCL將把把這個整整數(shù)看作作八進(jìn)制制的,如如果前兩兩個字符符是0 xx則這個個整數(shù)被被看作是是十六進(jìn)進(jìn)制的。TCLL的實(shí)數(shù)數(shù)的寫法法與ANNSI C中完完全一樣樣。如:2.117.99e+1126e443. 運(yùn)算符和和優(yōu)先級級下面的表表格中列列出了TTCL中中用到的的運(yùn)算符符,它們們的語法法形式和和用法跟跟ANSSI CC中很相相似。這這里就不不一一介介紹。下下表中的的運(yùn)算符符是按優(yōu)優(yōu)先級從從高到低低往下排排列的。同一格格中的運(yùn)運(yùn)算

52、符優(yōu)優(yōu)先級相相同。語法形式式結(jié)果操作數(shù)類類型-a!aa負(fù)a非aint,flooatint,flooatinta*ba/ba%b乘除取模int,flooatint,flooatinta+ba-b加減int,flooatint,flooatabb左移位右移位intintaba=bb小于大于小于等于于大于等于于int,flooat,strringgint,flooat,strringgint,flooat,strringgint,flooat,strringga= =ba!=bb等于不等于int,flooat,strringgint,flooat,strringga&b位操作與與intab位操作異異

53、或inta|b位操作或或inta&bb邏輯與int,flooata|bb邏輯或int,flooata?b:c選擇運(yùn)算算a:innt,ffloaat數(shù)學(xué)函數(shù)數(shù)TCL支支持常用用的數(shù)學(xué)學(xué)函數(shù),表表達(dá)式中中數(shù)學(xué)函函數(shù)的寫寫法類似似于CC+語言的的寫法,數(shù)數(shù)學(xué)函數(shù)數(shù)的參數(shù)數(shù)可以是是任意表表達(dá)式,多多個參數(shù)數(shù)之間用用逗號隔隔開。例例如:%sett xx 22% exxpr 2* sinn($xx0 eelseeif $xx1 eelseeif $x2 eelsee 注意,上上例中一一定要寫寫在上一一行,因因?yàn)槿绻贿@樣樣,TCCL 解解釋器會會認(rèn)為iif命令令在換行行符處已已結(jié)束,下下一行會會被當(dāng)成成

54、新的命命令,從從而導(dǎo)致致錯誤的的結(jié)果。在下面面的循環(huán)環(huán)命令的的書寫中中也要注注意這個個問題。書寫中中還要注注意的一一個問題題是iff 和之間應(yīng)應(yīng)該有一一個空格格,否則則TCLL解釋器器會把if作為為一個整整體當(dāng)作作一個命命令名,從從而導(dǎo)致致錯誤。循環(huán)命令令:whhilee 、forr、 fooreaachwhille命令令語法為: whiile ttestt boddy參數(shù)teest是是一個表表達(dá)式,body是一個腳本,如果表達(dá)式的值非0,就運(yùn)行腳本,直到表達(dá)式為0才停止循環(huán),此時while命令中斷并返回一個空字符串。例如:假設(shè)變量量 a 是一個個鏈表,下下面的腳腳本把a(bǔ)a 的值值復(fù)制到到b:

55、seet bb set i exppr lleengtth $a -1whhilee $i=0laappeend b linndexx $aa $iiinncr i -1for命命令語法為: forr innit tesst rreinnit boddy參數(shù)innit是是一個初初始化腳腳本,第第二個參參數(shù)teest是是一個表表達(dá)式,用用來決定定循環(huán)什什么時候候中斷,第第三個參參數(shù)reeiniit是一一個重新新初始化化的腳本本,第四四個參數(shù)數(shù)boddy也是是腳本,代代表循環(huán)環(huán)體。下下例與上上例作用用相同:seet bb foor sett i exxpr lllenggth $a -11 $ii

56、=00 inccr ii -11 llapppendd b liindeex $a $i foreeachh命令這個命令令有兩種種語法形形式1。 fforeeachh vaarNaame lisst bbodyy第一個參參數(shù)vaarNaame是是一個變變量,第第二個參參數(shù)liist 是一個個表(有序集集合),第三三個參數(shù)數(shù)boddy是循循環(huán)體。每次取取得鏈表表的一個個元素,都都會執(zhí)行行循環(huán)體體一次。下例與與上例作作用相同同:seet b fforeeachh i $asett b liinseert $bb 0 $i2。 fforeeachh vaarliist11 liist11 ?vvar

57、llistt2 llistt2 ? Boody這種形式式包含了了第一種種形式。第一個個參數(shù)vvarllistt1是一一個循環(huán)環(huán)變量列列表,第第二個參參數(shù)是一一個列表表lisst1,varrlisst1中中的變量量會分別別取liist11中的值值。boody參參數(shù)是循循環(huán)體。 ?vvarllistt2 llistt2 ?表示可可以有多多個變量量列表和和列表對對出現(xiàn)。例如:set x foreeachh ii j aa b c dd e f lapppennd xx $jj $ii這時總共共有三次次循環(huán),x的值為b a d c f e。set x foreeachh i a b cc jj dd

58、e f gg lapppennd xx $ii $jj這時總共共有四次次循環(huán),x的值為a d b e c f g。set x foreeachh i a b cc j kk d ee f g lapppennd xx $ii $jj $kk這時總共共有三次次循環(huán),x的值為a d e b f g c 。breaak和conntinnue命命令在循環(huán)體體中,可可以用bbreaak和conntinnue命命令中斷斷循環(huán)。其中bbreaak命令令結(jié)束整整個循環(huán)環(huán)過程,并并從循環(huán)環(huán)中跳出出,coontiinuee只是結(jié)結(jié)束本次次循環(huán)。swittch 命令和C語言言中swwitcch語句句一樣,TCL中的

59、switch命令也可以由if命令實(shí)現(xiàn)。只是書寫起來較為煩瑣。 switch命令的語法為: switch ? options? string pattern body ? pattern body .?第一個是是可選參參數(shù)opptioons,表表示進(jìn)行行匹配的的方式。TCLL支持三三種匹配配方式:-exxactt方式,-gloob方式式,-rregeexp方方式,缺省情情況表示示-gllob方方式。-exaact方方式表示示的是精精確匹配配,-gglobb方式的的匹配方方式和sstriing mattch 命令的的匹配方方式相同同(第八節(jié)節(jié)介紹),-reegexxp方式式是正規(guī)規(guī)表達(dá)式式的匹配配

60、方式(第八節(jié)節(jié)介紹)。第二二個參數(shù)數(shù)strringg 是要要被用來來作測試試的值,第第三個參參數(shù)是括括起來的的一個或或多個元元素對,例例:swittch $xx a -b inccr t11c inccr tt2deefauult iincrr tt3其中a的的后面跟跟一個表示使使用和下下一個模模式相同同的腳本本。deefauult表表示匹配配任意值值。一旦旦swiitchh命令找到到一個模模式匹配配,就執(zhí)執(zhí)行相應(yīng)應(yīng)的腳本本,并返返回腳本本的值,作作為swwitcch命令令的返回回值。evall命令evall命令是是一個用用來構(gòu)造造和執(zhí)行行TCLL腳本的的命令,其其語法為為:evall arr

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論