ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:27.25KB ,
资源ID:6545336      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-6545336.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(TCL语法.docx)为本站会员(b****3)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

TCL语法.docx

1、TCL语法Tcl简介(一):Tcl 语法Tcl 语法Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以释运行,其强大的功能和简单精妙的语法会使你感到由衷的喜悦,这片文章对 Tcl有很好的描述和说明。极具可读性,我并不是原封不动的翻译而是加上了一些自己的体会和例子,如有错误请指正。如果你看起来很吃力,那是因为 Tcl与一般的语言有一些不同之处,刚开始可能有一些不理解,但很快就会掌握的。请坚持一下,我能坚持写完,你至少也应该坚持读一遍吧!Tcl Overview这篇文章里包含了几乎 Tcl 的全部。文章的作者是Tcl的缔造者John Ousterhout,对Tcl的诠释非常清楚。Introd

2、uction 简介Tcl 代表 tool command language 发音为 tickle. 。它实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。它有一个简单的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但Tcl库收到命令后将它分解并执行内建

3、的命令,经常会产生递归的调用。/* 现在不理解没关系,请往下看 */应用程序使用Tcl作为它的命令语言有三个好处:1 Tcl提供了标准语法,一旦用户掌握了Tcl就可以很容易的发布命令给基于Tcl的程序。2 Tcl实现了很多的功能,使你的工作变得很方便。3 TCl可作为程序间通信的接口。Tcl Interpreters 解释器在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个 Tcl命令是在特定的Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。Tcl_Interp是一个轻量级的结构,可以快速

4、的新建和删除。Tcl Data Types 数据类型Tcl只支持一种数据结构:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。然而字符串的实际解释是依赖于上下文或命令的。它有三种形式:命令(command), 表达式(expresion)和表(list)。下面会讨论细节。Basic Command Syntax 基本语法Tcl有类似于shell和lisp的语法,当然也有许多的不同。一条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个域(field)的集合,域使用空白分开的,第一个域是一个命

5、令的名字,其它的是作为参数来传给它。例如:set a 22 /相当于C中的 a=22 a是一个变量这条命令分为三个域:1: set 2: a 3: 22set使用于设置变量的值的命令,a、20 作为参数来传给它,a使它要操作的变量名,22是要付给的a值。Tcl的命令名可以使内建的命令也可以是用户建的新命令,在应用程序中用函数Tcl_CreateCommand来创建。所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。命令的名字必须被打全,但 Tcl解释器找不到一同名的命令时会用 unknown命令来代替。在很多场合下,unknown 会在库目录中搜寻,找到一个的话,会自动生成一个Tc

6、l命令并调用它。unknown经常完成缩略的命令名的执行。但最好不要使用。Comments 注释和shell很象,第一个字母是#的Tcl字符串是注释。Grouping arguments with double-quotes 用双引号来集群参数用双引号来集群参数的目的在于使用有空白的参数。例如: set a this string contains whitespace如够一个参数一双引号来开始,该参数会一直到下一个双引号才结束。其中可以有换行符和分号。子替换是在正式运行该调命令之前由分析器作的Variable substitution with $ 用美元符进行变量替换说白了就是引用该变量。

7、如:set a helloset b $a / b = hello 实际上传给set命令的参数/是b,helloset c a / b = aCommand substitution with brackets 命令子替换(用方括号)例如:set a set b hello实现执行 set b hello 并用其结果来替换源命令中的方括号部分,产生一条新命令set a hello /hello 为 set b hello 的返/回值最终的结果是b=hello a=hello 当命令的一个子域以方括号开始以方括号结束,表示要进行一个命令子替换。并执行该子命令,用其结果来替换原命令中的方括号部分。

8、方括号中的部分都被视为Tcl命令。一个复杂一点的例子:set a xyzset b abc.set c def/return xyzabcdefBackslash substitution 转移符替换转移符时间不可打印字符或由它数意义的字符插入进来。这一概念与C语言中的一样。b Backspace (0x8).f Form feed (0xc).n Newline (0xa).r Carriage-return (0xd).t Tab (0x9).v Vertical tab (0xb). Left brace (). Right brace (). Open bracket (). Clos

9、e bracket ().$ Dollar sign ($).sp Space ( ): does not terminate argument.; Semicolon: does not terminate command. Double-quote. Grouping arguments with braces 用花扩括号来集群参数用花扩括号来集群参数与用双引号来集群参数的区别在于:用花扩括号来集群参数其中的三种上述的子替换不被执行。而且可以嵌套。例如: set a xyz a b c d/set收到俩个参数 a xyz a b /c deval set a 22set b 33/eval

10、收到一个参数 set a 22nset b 33Command summary 命令综述1.一个命令就是一个字符串(string)。2.命令是用换行符或分号来分隔的。3.一个命令由许多的域组成。第一个于是命令名,其它的域作为参数来传递。4.域通常是有空白(Tab横向制表健 Space空格)来分开的。5.双引号可以使一个参数包括换行符或分号。三种子替换仍然发生。6.花括号类似于双引号,只是不进行三总体换。7.系统只进行一层子替换,机制替换的结果不会再去做子替换。而且子替换可以在任何一个域进行。8.如果第一个非控字符是#, 这一行的所有东西都是注释。Expressions 表达式对字符串的一种解释

11、是表达式。几个命令将其参数按表达式处理,如:expr、for 和 if,并调用Tcl表达式处理器(Tcl_ExprLong,Tcl_ExprBoolean等)来处理它们。其中的运算符与C语言的很相似。!逻辑非* / % + - 左移 右移 只能用于整数。 = = != 逻辑比较& |位运算 和 异或 或& | 逻辑和 或x ? y : z If-then-else 与C的一样Tcl 中的逻辑真为1,逻辑假为0。一些例子:5 / 4.05 / ( string length abcd + 0.0 )- -计算字符串的长度 转化为浮点数来计算0x03 20y array names a1 2 th

12、reearray size arrayName 返回数组的元素个数。tclsharray size a3下面是用于遍历的命令arrry startsearch arrayName初始化一次遍历,返回一个遍历标示(searchId)在下面的命令是中使用。array nextelement arrayName searchId返回下一个数组中的元素。如果没有返回一个空串。array anymore arrayName searchId 返回 1 表示还有更多的元素。0 表示没有了。array donesearch arrayName searchId 结束该次遍历。array nextelemen

13、t arrayName searchId 返回下一个元素。tclsharray startsearch as-1-atclsharray nextelement a s-1-a1111tclsharray nextelement a s-1-a2222tclsharray anymore a s-1-a1tclsh?array nextelement a s-1-a3333tclsharray donesearch a s-1-a注意可以同时并发多个遍历。break跳出最近的循环。case string in patList body . case string patList body .

14、case string in patList body . case string patList body . 分支跳转。例如:case abc in a b puts 1 default puts 2 a* puts 3return 3.case a in a b format 1default format 2a* format 3returns 1.case xyz a bformat 1defaultformat 2a*format 3returns 2. 注意default不可以放在第一位。支持shell文件名风格的匹配符。catch command catch command v

15、arName 用于阻止由于错误而导致中断执行。执行command, 每次都返回TCL_OK, 无论是否有错误发生。如有错误发生返回1 ,反之返回0。如果给了varName这被置为错误信息。注意varName是已经存在的变量。cd cd dirName 转换当前工作目录。如dirName未给出则转入home目录。close fileId 关闭文件描述符。concat arg . 将参数连接产生一个表。concat a b c d e f g hreturn a b c d e f g hcontinue结束该次循环并继续循环。eof fileId如fileId以结束 返回1,反之返回 0。err

16、or message error message info error message info code 返回一个错误,引起解释器停止运行。info用于初始化全局变量errorInfo。code被付给errorCode。eval arg . 将所有的参数连起来作为命令语句来执行。exec arg . 仿佛是在shell下执行一条命令。exec ls -colorexec cat /etc/passwd /tmp/aexit exit returnCode 中断执行。expr arg 处理表达式。set a expr 1+1/a=2file subcommand name一组用于文件处理的命令

17、。file subcommand name arg .file atime name返回文件的最近存取时间。file dirname name返回name所描述的文件名的目录部分。file executable name返回文件是否可被执行。file exists name返回1 表示文件存在,0 表示文件不存在。 file extension name返回文件的扩展名。file isdirectory name判断是否为目录。file isfile name 判断是否为文件。file lstat name varName以数组形式返回。执行lstat系统函数。存储在varName。file

18、mtime name文件的最近修改时间。file owned name判断文件是否属于你。file readable name判断文件是否可读。file readlink name都出符号连接的真正的文件名。file rootname name返回不包括最后一个点的字符串。file size name 返回文件的大小。file stat name varName 调用stat内和调用,以数组形式存在varName中。file tail name 返回最后一个斜线以后的部分。file type name返回文件类型file, directory, characterSpecial,blockSp

19、ecial, fifo, link, 或socket。file writable name判断文件是否可写。flush fileId立即处理由fileId描述的文件缓冲区。for start test next bodyfor循环。同C总的一样。for set i 1 $i glob /tmp/*a b c当加上参数 -nocomplain 时,如文件列表为空则发生一个错误。global varname . 定义全局变量。if test trueBodyif test trueBody falseBodyif test then trueBodyif test then trueBody el

20、se falseBody条件判断,是在没什么说的。incr varNameincr varName increment如果没有incremnet,将varName加一,反之将varName加上increment。set i 10incr i/i=11incr i 10/i=21info subcommand info subcommand arg . 取得当前的Tcl解释器的状态信息。info args procname返回由procname指定的命令(你自己创建的)的参数列表。如:proc ff a b c puts hahainfo args ff/return a b cinfo bod

21、y procname 返回由procname指定的命令(你自己创建的)的函数体。如:proc ff a b c puts hahainfo body ff/return puts hahainfo cmdcount 返回当前的解释器已经执行的命令的个数。info commands info commands pattern 如果不给出模式,返回所有的命令的列表,内建和自建的。模式是用C Shell匹配风格写成的。info complete command 检查名是否完全,有无错误。info default procname arg varname procname的参数arg,是否有缺省值。i

22、nfo exists varName 判断是否存在该变量。info globals info globals pattern 返回全局变量的列表,模式同样是用C Shell风格写成的。info hostname返回主机名。info level info level number 如果不给参数number则返回当前的在栈中的绝对位置,参见uplevel中的描述。如加了参数number,则返回一个列表包含了在该level上的命令名和参数。info library 返回标准的Tcl脚本的可的路径。实际上是存在变量tcl_library中。info locals info locals pattern 返回locale列表。info procsinfo procs pattern返回所有的过程的列表。info script 返回最里面的脚本(用 source 来执行)的文件名。info tclversion 返回Tcl的版本号。info vars info vars pattern 返回当前可见的变量名的列表。下面是一些用于列表的命令,范围可以是end。join list join list joinString 将列表的内容连成一个字符串。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2