Tcl("mandLanguage",即工具命令语言;Tcl念作"tickle"即“踢叩”)是一种简单易用易于扩展的嵌入式脚本语言,主要用于发布命令给交互式程序(如文本编辑器、调试器),及完成自动化批处理工作。Tcl语言不同于其他语言的最大的特点是:Tcl程序由Tcl命令序列组成,其每条语句都是一条指令。由于其极易扩展的特性,Tcl有大量的用C/C++编写的扩展用于提供Tcl本身不具有的功能。其中使用最广泛的扩展是TK,TK提供了各种OS平台下的图形用户界面GUI(连强大的Python语言都不单独提供自己的GUI,而是提供接口适配到TK上)。另一个流行的扩展包是Expect,它提供了通过终端自动执行命令的能力,例如passwd,ftp,等命令驱动的外壳。一、Tcl程序基本结构1、基本语法Tcl的语法类似于shell:一条Tcl的命令串包含若干条命令,命令使用换行符或分号来隔开;而每一条命令包含若干个域(field),域使用空白(空格或TAB)来隔开——第一个域是命令的名字,其它的域是该命令的参数。Tcl解释器对一个命令的执行过程分为两步:分析阶段和执行阶段。在分析阶段,Tcl解释器运用规则识别出命令并把命令分成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,Tcl解释器会把第一个单词当作命令名,并查看这个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有后面的单词作为参数传递给该命令过程,让命令过程进行处理。Tcl解释器既可以执行Tcl内建命令亦可执行用户自己通过C/C++函数实现的新建命令,mand来完成命令的创建。所有命令参数都被作为字符串来传递,命令自己会按其所需来解释参数。另外关于Tcl的注释有一个特殊的要求:'#'必须出现在Tcl解释器期望命令的第一个字符出现的地方,才被当作注释。例如:seta100#mentsetb101;#ment第一个例子中'#'及其后面的内容会被当作set的参数而非注释从而导致参数个数错误;但第二个被解释为注释,因为'#'前面有一个分号,而分号和换行一样被看作是命令的分隔符。2、置换(Substitution)setx10sety100+x上面命令执行后,y的值是“100+x”而不是我们期望的110。这是因为Tcl解释器在分析命令时,把所有的命令参数都当作字符串看待,所以x被看作了字符串“100+x”的一部分。如果我们想使用x的值'10',就必须告诉Tcl解释器:我们在这里期望的是变量x的值,而非字符'x'。那么怎么告诉Tcl解释器呢?这就要用到Tcl语言中的置换功能。Tcl提供三种形式的置换:变量置换、命令置换和反斜杠置换。每种置换都会导致一个或多个单词本身被其他的值所代替。置换可以发生在包括命令名在内的每一个单词中,而且置换可以嵌套。(1)变量置换(variablesubstitution)变量置换由一个$符号标记,变量置换会导致变量的值而非变量(标识符)本身被插入到字符串中。setx10sety100+$x这时,y的值还不是我们想要的值110,而是10+100,因为Tcl解释器把10+100看成是一个字符串而不是表达式;y要想得到值110,还必须用命令置换,使得Tcl会把10+100看成一个表达式并求值。(2)mandsubstitution)命令置换是由[]
语言快速参考手册 来自淘豆网m.daumloan.com转载请标明出处.