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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

系统学习TCL脚本入门教程Word下载.docx

1、更多数组相关 252.24 第24课:文件存取 282.25 第25课:文件信息 302.26 第26课:TCL中的子进程调用open & exec 332.27 第27课:命令或者变量是否存在info 342.28 第28课:解释器状态info 352.29 第29课:过程信息info 362.30 第30课:模块化source 372.31 第31课:建库unknown & info library 382.32 第32课:创建命令eval 402.33 第33课:在eval中应用format & list 402.34 第34课:不使用eval替换format & subst 422.3

2、5 第35课:改变工作目录 cd & pwd 432.36 第36课:调试和错误errorinfo & errorCode & catch 442.37 第37课:调试trace 452.38 第38课:命令行参数和环境串 462.39 第39课:time & unset 472.40 第40课:socket & fileevent & vwait 492.41 第41课:日期时间clock 512.42 第42课:i/o通道fblocked & fconfig 532.43 第43课:子解释器 562.44 第44课:数据库操作 572.45 第45课:函数或过程数组的输入和输出方法 592

3、.46 第46课:info的用法 592.47 第47课:多线程 613 跋 731 TCL语法1.1 简介作为脚本语言,tcl语法简单而功能强大。它诞生于80年代初,进入中国的时间也许多年了。不过关于tcl的资料多而杂,一时心血来潮,想到写一篇文章,以例子为中心,系统讲解tcl语法,让技术人员花最少的时间对tcl有个全面而系统的了解,工作上使用时可以速查或参考代码。于是有了本文。1.2 运行环境多数代码运行在 ActiveTcl8.3.4.1-9.win32-ix86.exe 安装以后的windows环境中,只有两个例程运行在unix的环境下。1.3 本文约定本文为了便于速查和速学,所以每课

4、分成讲解和例子两部分,主要是围绕着例子进行讲解。文字不多。1.4 参考资料本文主要参考了TclTutor 2.0 beta4。2 引言简单文本输出讲解:1 注释符号是 或者 ;# ,在命令后注释用 ;# ,在行开头两者均可;2 puts :输出文本,多个单词如被空格或TAB分隔需要使用“”或 括起来;3 多个命令写在一行使用 ; 间隔。例子:002_puts.tcl# ok ;# 正确; # ok ;# 正确, 分号和井号之间可以有空格puts Hello ;puts Hello,World ;# 正确,多个单词之间不是被空格或者TAB分隔开puts Hello World ;# 这行命令运行

5、出错,被空格分隔puts Hello, World - In quotes ;# 注释puts Hello, World - In Braces # 这行命令运行出错,必须使用 ;# 作为注释符号This is line 1 puts this is line 2# 正确,用分号分隔两个命令Hello, World; - With a semicolon inside the quotes#正确,分号在双引号内,作为字符串一部分给变量赋值1 set:给变量赋值,格式为 set var value003_var.tcl# 给变量X赋一个字符串set X This is a string# 给变量

6、Y赋一个数字set Y 1.24# 显示X和Y的内容puts $Xputs $Y# 打印一个分隔串.# 打印在一行中,推荐使用双引号set label The value in Y is: $label $Yputs $label$Y命令的赋值与置换一1 TCL中命令的赋值分为置换和赋值两个步骤2 续行符为 3 转义符同为 4 特殊字符列表:序号字符输出十六进制1a响铃x072b回车x083f清屏x0c4n换行x0a5rx0d6t制表符x097v垂直制表符(Vertical Tab)x0b8ddd八进制值d=0-79xhh十六进制值h=0-9,A-F,a-f004_eval.tcl# Show

7、 how a affects the $set Z Albanyset Z_LABEL The Capitol of New York is:$Z_LABEL $Z ;#显示Albany$Z_LABEL $Z#显示$Z,被 转义# The next line needs a backslash to escape the $nBen Franklin is on the $100.00 bill# n换行; $100前的 必须有,否则会将100作为一个变量,提示出错set a 100.00Washington is not on the $a bill# This is not what yo

8、u wantLincoln is not on the $a bill# 显示$100,说明是后结合的,先置换了$a,此处严格的写应该写为 $aHamilton is not on the $a bill# 显示$aBen Franklin is on the $a bill# 显示$100,说明是后结合的,先置换了$an. examples of escape stringsTabtTabtTabThis string prints out non two lines# 行中 没有打印出来,如果要打印出来,需要写成 This string comes outon a single line#

9、 当一行太长,不便于阅读,使用 做续行符命令的赋值与置换二1最外层是 则不会进行置换操作,但其中的续行符仍然有效005_escape.tcln. examples of differences between and #and前的双引号前必须有 进行转义,否则这个双引号回和前面的双引号结合, 导致成了 “xxx” and “ 的结构,会提示出错# 显示The Capitol of New York is: Albanyputs $Z_LABEL $Z ;# 显示 $Z_LABEL $Z,没有进行置换,中不会置换n. examples of differences in nesting and

10、$Z_LABEL $Z# 最外层是双引号,所以进行了置换puts Who said, What this country needs is a good $Z cigar!? ;#最外层是花括号,所以没有进行置换puts There are no substitutions done within braces n r x0a f v ;#puts But, the escaped newline at the end of astring is still evaluated as a space ;#续行符仍然生效命令的赋值与置换三1 可以传递其中的命令结果,注意不能被 包含;2 双引号包

11、含的 中的命令可以正常执行,命令结果也可以传出;3 包含的 中的命令不会执行,更不会有命令结果传出来。006_escape.tclset x abcA simple substitution: $xn#显示abcset y set x def ;#先执行中的命令,将”def”赋值给x,然后将该命令的结果赋值给yRemember that set returns the new value of the variable: X: $x Y: $yn#显示x和y都是defset z set x This is a string within quotes within braces ;#由于在中,

12、所以并没有执行对x的赋值,只是将赋值给zNote the curly braces: $znset a set x This is a string within braces within quotes#执行了对x的赋值操作,并将值传出来赋给了aSee how the set is executed: $a$x is:set b set y This is a string within braces within quotesNote the escapes the bracket:n $b is: $b$y is: $y算数运算1 操作符操作符解释- + !- : 负号 + : 正号 :

13、 位操作非 ! : 逻辑非* / %* : 乘 / : 除 % : 取模+ -+ : 加 - : 减 循环左移 循环右移& 按位与 : 按位异或| : 按位或 逻辑与| : 逻辑或10x?y:zif-then-else2 数学函数函数acos11log10cos12tanhypot13atan2sinh14floorasin15powcosh16tanhlog17ceilsqrt18fmodatan19sinexp007_math.tclset X 100;set Y 256 ;# 行末是否有分号都可以set Z expr $Y + $X# 变量是否被双引号包含都可以,不过建议使用双引号set

14、 Z expr $Y + $X$Y plus $X is The square root of $Y is expr sqrt($Y)nBecause of the precedence rules 5 + -3 * 4 is: expr -3 * 4 + 5Because of the parentheses (5 + -3) * 4 expr (5 + -3) * 4n. more examples of differences between puts $Z_LABEL expr $Y + $X ;#外层是花括号不会进行置换$Z_LABEL expr $Y + $X# 外层是双引号会进行

15、置换The command to add two numbers is: expr $a + $b文本比较SWITCH应用1 switch的分支中的命令使用花括号包含,但是并不会影响花括号中的命令执行,切记,这是switch的格式;2 如果不想分支条件进行置换,需要在外加上花括号,不会影响分支中的命令执行。008_switch.tcl# Set the variables well be comparingONEset y 1;set z # This is legalswitch $x puts ONE=1TWOputs TWO=2defaultputs NO_MATCH#这种写法合法,但是

16、阅读不便switch $x #这种写法好看一些,推荐#下面这种写法$z被置换,走入$z的条件分支,表面上看条件分支中的命令在花括号内,这只是switch的一种格式,所以其中的命令仍然被执行了。$z set y1 expr $y+1;MATCH $z. $y + $z is $y1 MATCH ONE. $y + one is $y1 set y1 expr $y+2;MATCH TWO. $y + two is $y1THREE set y1 expr $y+3;MATCH THREE. $y + three is $y1 puts $x does not match any of these

17、 choices# This form of the command disables variable substitution in the pattern#下面为了不置换$z,在外层加上了花括号,于是走入了ONE分支,而分支中的命令仍然被执行了switch $x $x is NOT A MATCH数值比较IF应用1 条件式结果FALSETRUE数值非零yes / nonoyestrue / falsefalsetrue2置换变量的方法,set y x ; puts $y ,因为是后结合并且是一次置换,所以打出来的是 $x ,不是$x的值;但是在if的条件式中进行了二次置换, $y 被置换

18、成了 $x 的值3注意:新行中需要写为 else ,不能将 写到前一行的末尾,也不能省略 后面的那个空格,后面的 也需要写在当行,并且前面需要一个空格。009_if.tclset x 1;if $x = 2 puts $x is 2 else puts $x is not 2#判断是否相等使用 =if $x != 1 ;#判断是否不等使用 !=$x is != 1 else $x is 1if $x=1 puts GOT 1set y x;if $y ! ;#在if条件式中$y进行了二次置换$y is !#在puts命令中,只进行了一次置换$y is 1WHILE 循环x讲解:1while后面

19、的条件表达式是放在花括号中的;放在双引号中会只执行一次置换010_while.tclwhile $x 5 puts x is $x set x expr $x + 1exited first loop with X equal to $xnset x 0;while $x 5#只执行一次置换16 break;#如果去掉这句就成了死循环 if $x 3 continue;#这句使4 打不出来 exited second loop with X equal to $xnFOR循环和incr1incr x 和 set x expr $x + 1 达到一样的效果,向上加一x011_for.tclfor

20、 puts Start set i 0 $i 2 incr i;I after incr: $i ;#第一部分只执行一次,后面两部分每次循环都会执行I inside first loop: set i 3 $i #不会执行循环体中的命令I inside second loop: set i 0;while $i 2 incr i;过程PROC1 格式:proc name args body2 调用方法中参数可以用花括号或者双引号包含,也可以不包含3 在puts等命令中需要置换的话,需要使用方括号012_proc.tclproc sum arg1 arg2 set x expr $arg1+$a

21、rg2; return $x ;#过程返回值 The sum of 2 + 3 is: sum 2 3nn#调用过程#puts sum 2 3nn#出错,提示找不到第二个参数,置换过程中第一个参数是2 3,所以找不到第二个参数 sum(2 3)nn#输出sum(2 3),因为没有方括号,根本没有进行置换 sum2 3nn#输出sum2 3,因为没有方括号,根本没有进行置换sum 2 3 ;#正确sum 2 3 ;sum 23proc for a b c The for command has been replaced by a putsThe arguments were: $an$bn$cnfor set i 1 $i 10 incr i过程PROC的参数定义1 过程的参数赋缺省值:proc name arg1 arg2 value2 过程的不确定个数的参数定义:proc name arg1 args013_proc.tclproc example first second args ;#参数定义:赋缺省值和不确定个数参数定义

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1