加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

TCL脚本常用命令   转载

(2011-07-20 17:12:33)
标签:

it

1.TCL的命令包含一个或几个单词,第一个单词代表命令名,其它的为这个命令的参数,之间以空格或TAB键隔开.


2.%TCL的命令提示符

3.TCL提供三种形式的置换:变量置换,命令置换和反斜杠置换.置换可以嵌套.变量置换用$标志,导致变量的值插入一个单词中。命令置换用[],TCL解释器遇到[,把随后的字符当一个命令名,[]中必须是一个合法的TCL脚本。[]中脚本的值为最后一个命令的返回值。反斜杠用于在单词符号中插入诸如换行符,空格,[,$.:set msg multiple\ space

4.TCL在分析一个变量置换时,只把从$往后直到第一个不是字母,数字或下划线的字符之间的单词符号作为要被置换的变量的名字.要想实现用{}

5.TCL不支持复杂的数据类型,TCL的一个扩展ITCL可实现。

6.append命令可把文本加到一个变量后,expr命令可以有一个或多个参数,它把所有的参数合一起作一个表达式,然后求值.

7.concat命令可把多个list合成一个list;

8.lindex命令语法:lindex list index,返回list的第index(0开始)元素 

9.llength命令 语法:llength list,返回list的元素个数.

10.linsert命令

   语法:linsert list index value ?value...?

返回一个新串,新串是把所有的value参数值插入list的第index(0-based)元素之前得到。例: % linsert {1 2 {3 4}}    7 8  {9 10}  1 7 8 {9 10} 2 {3 4}

11.lsearch命令 语法:lsearch ?-exact? ?-glob? ?-regexp? list pattern0返回list中第一个匹配模式pattern的元素的索引,如果找不到就返回-1 

12.lsort命令 语法:lsort ?option? list这个命令返回把list排序后的串         

options可以有:
-ascii,
-dictionary,        

-integer(list的元素转换成整数,按整数排序),
-real(
转浮点数
..),
-increasing(
升序),

-decreasing(降序).

13.foreach命令 语法:foreach varName list body
语法:foreach varlist1 list1 ?varlist2 list2...? Body

14.eval命令 是一个用来构造和执行TCL脚本的命令

15.source命令 读一个文件并把这个文件的内容作为一个脚本进行求值

16.TCL中的过程类似与C中的函数。

:proc add {x y}{....}

17.global命令可以在过程内部引用一个全局变量的值.

18.引用 upvar命令 语法:upvar ?level? otherVar myVar ?otherVar myVar...?upvar可以在过程中

对全局变量或其他过程中的局部变量进行访问.:upvar $atg b.如要访问全局变量可用

upvar #0 other x.

19.字符串操作:

TCL中字符串操作有关的命令有:string,format,regexp,regsub,scan.

formatCsprintf函数相似 :set msg [format "%s is %d old" $name $age]

scan命令可以认为是format的逆,:scan "some.21.45" "some.%d.%d" a b   

regexp命令用于判断正则表达式exp是否全部或部分匹配字符串string,匹配返回1,否则0.语法:regexp ?switch? exp string(--是什么意思???)


string
命令 语法:string option arg ?arg...?           

:1 string compare ?-nocase? ?-length int? string1 string2              

2 string equal ?-nocase? ?-length int? string1 string2
3 string first string1 string2 ?startindex?(
string2中从头查找与string1匹配的字符,如找到返回匹配的第一个字母所在的位置,否则返回
-1.
4 string index string charIndex(
返回string中第charIndex个字符
)
5 string last string1 string2 ?startindex?(
3,区别是从后往前查找)

6 string length string              

7 string match ?-nocase? pattern string(如果pattern匹配string,返回1,否则返回0,如果有-nocase,那么就不区分大小写)
8 string range string first last (
返回子字符串
)
9 string repeat string count (
返回值为:重复了string字符串count次的字符串
)
10 string replace string first last ?newstring?
11 string tolower string ?first? ?last?' }            

12 ....   toupper .....            

13 string trim string ?chars?(返回值为:string字符串的首尾去掉chars中的字符后的字符串.如没chars,那么将去掉spaces,tabs,newlines,carriage returns)

:string trim " def' V; I$ W) ]- s( _; C; O2 A/ _! s
                   > "

def            

14 string trimleft string ?chars? (不过只去掉左边的字符)
15 ...    trimright ...

20.错误与异常:

catch命令的参数是TCL脚本,如果脚本正常完成,catch返回0,如果脚本中发生错误,catch会俘获错误"这保证catch本身不被终止掉"然后返回1表示发生了错误)

:catch {unset x}  catch {unset x} msg




 


什么是TCL

TCL (Tool Command Language) 是一种解释执行的脚本语言 (Scripting Language) 。 它提供了通用的编程能力,支持变量、过程和控制结构,拥有一个功能强大的固有的核心命令集,同时还提供了脚本方式和二进制代码方式的命令扩展接口。

TCL 最初是从UNIX上发展而来的,因此很多命令都有明显的UNIX痕迹。现在TCL已经发展为支持UNIX、Windows(包括桌面系列和NT系列)、Macintosh 的跨平台多种操作系统的脚本语言。

Tk (TCL Toolkit)是TCL 的超集,提供 GUI 编程接口,使用户可以用 TCL 语言编写图形用户界面。 由于TCL的平台无关性,Tk 也具有平台/操作系统无关的特性,因而深受欢迎。

通常我们使用的TCL环境都包含对 Tk 的支持,所以我们也常常把TCL叫做 Tcl/Tk

。 TCL/Tk 由于其平台无关特性、解释型语言的简单易用和强大的脚本功能,得到广泛的应用。

TCL 目前已成为自动测试中事实上的标准。


TCL的特点

1.

简单易学

TCL语法本身很简单,只有一些基本的结构和较少的语法,简单易学。TCL没有复杂的词法、语法、语义、语用定义,命令语法接近 C 语言的格式,运用中兼具 C 语言的灵活和 BASIC 语言的易用,非常适合初学者。

2.

功能强大

TCL简单易学而又不失其强大的功能。

流程控制、数学运算、字符处理、文件管理及I/O、串口、Socket、错误异常 …… 。可以说一种编程语言应该具备的功能TCL都具备了。

而TCL的另一大特点是与其他软件的良好融合。可以把TCL看作一种将软件创建的模块组合成为应用程序的“胶合剂”,简单的胶合使整个作业更加容易。

3.

平台无关

如前所述,TCL可运行于UNIX、Windows、Macintosh 等多种操作系统,使用户不必关心具体的系统平台而专注测试对象的特性和脚本的编写,便于移植,也方便跨平台测试的统一脚本管理和控制。

除通用特性外,与平台相关的特性如TCL的安装等,本文中均以最常见的Windows 平台为例,特殊情况会专门说明。

4.

扩展性好

TCL的解释器是用C语言实现的,TCL本身也提供了完备的C语言接口库,包括头文件、库文件和API帮助文件。应用这个库中的API,可以很容易地在C/C++应用程序中嵌入一个完整的TCL解释器,并可根据自己的需要对TCL语言进行扩展。

另一方面,应用这些API也可以编写通用的二进制程序包(如:UNIX上的 *.so、Windows上的 *.dll,Macintosh上的*. shlib),并结合操作系统提供的API功能扩展TCL的特性,使之可以被任何标准的TCL解释器调用(TCL自身提供的外壳程序或利用C语言接口库自行编译的TCL解释器)。

TCL提供了对二进制程序包以及用TCL编写脚本程序包的版本机制,使TCL的扩展功能容易使用和管理。

TCL良好的可扩展性使得它能很好地适应产品测试的需要,测试任务常常会由于设计和需求的改变而迅速改变,往往让测试人员疲于应付。利用TCL的可扩展性,测试人员就可以迅速继承多种新技术,并针对产品新特点迅速推出扩展TCL命令集,以用于产品的测试中,可以较容易跟上设计需求的变化。

5.

基于字符串(无数据类型)

TCL是弱类型的语言。

TCL只有一种数据类型,就是字符串。各种数值、常数、字符、字符串的变量表示乃至数学运算、函数参数、别名引用、命令估算等操作都是用字符串来实现,因此TCL的字符串处理能力异常强大,而由字符串引申出来的列表(list)类型和运算更是将这种字符处理能力发挥到了及至。

可以说TCL是基于字符串的命令语言,整个TCL都架构在字符串之上。

6.

交互式(解释型)语言

在应用程序运行上,TCL是解释执行的。利用交互式的解释器,创建和修改程序都很轻松。使用TCL语言编写的测试例脚本,作了修改后,不用重新编译就可以调用TCL解释器马上执行,直接看到更改后的效果。

学习TCL的一个极佳的方法就是交互地尝试各种命令。

7.

不提供指针和内存管理功能

和其他解释型语言一样,TCL不提供指针和内存管理功能,也不提供接近低层的操作API。这一方面使TCL的学习难度大大降低,另一方面也使TCL的功能局限于比较“高层”的位置。

不过,TCL通过字符串演算和别名引用的方式可以实现函数参数的“传址”引用。利用TCL的二进制程序包也可以弥补部分这方面的缺陷。



TCL的组成

3.1

从应用角度划分

从应用角度看,TCL由两部分组成:

TCL提供基本语法和流程控制;

Tk则提供图形化用户界面的编写。

3.2

从开发角度划分

从开发角度看,TCL也由两部分组成:

Tcl/Tk 外壳程序提供TCL脚本运行和调试的基本环境 ;

C语言接口库提供用C/C++语言编写TCL解释器和扩展TCL功能的API接口。



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有