TCL脚本语言培训.ppt
- 格式:ppt
- 大小:3.97 MB
- 文档页数:31


TCL脚本入门教程
```
puts "Hello, TCL!" ;# 输出 Hello, TCL!
set name "John" ;# 定义一个变量 name
puts "My name is $name." ;# 输出 My name is John.
```
在这个例子中,第一行的`puts`命令用于输出文本到控制台,第二行的`set`命令用于定义一个变量,第三行的`puts`命令输出带有变量的文本。在TCL中,变量需要以`$`开头。
- `set`:用于定义和修改变量的值。
- `if`:用于条件判断,根据条件执行不同的代码块。
- `for`:用于循环执行代码块一定的次数。
- `while`:用于在条件满足的情况下循环执行代码块。
- `proc`:用于定义和调用过程(函数)。
- `expr`:用于进行数学运算和表达式求值。
```
set age 25
set height 1.75
set name "Tom" puts "My age is $age."
puts "My height is $height meters."
puts "My name is [string toupper $name]."
```
这个例子中,`set`命令用于定义三个变量,`puts`命令用于输出带有变量的文本。`string toupper`是TCL中的字符串处理命令,用于将字符串转换为大写。
```
set file [open "example.txt" r]
set content [read $file]
close $file
puts $content
```
这个例子中,`open`命令用于打开一个文件,`read`命令用于读取文件内容,`close`命令用于关闭文件。通过这些命令,可以很方便地对文件进行读写操作。
除了基本语法和内置命令,TCL脚本还有许多其他的特性和扩展,如错误处理、正则表达式、并发编程等。这些特性可以进一步提升TCL脚本的功能和灵活性。 总结起来,TCL是一种简单而强大的脚本语言,适用于各种自动化任务和脚本开发。掌握TCL脚本的基本语法和常用命令,可以轻松地编写各种脚本和自动化程序。希望本文对你入门TCL脚本有所帮助!
TCL脚本语言语法基础讲解
1.Tcl基础知识
1.1什么是tcl
Tcl全称是Tool command Language。它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握。
Tcl语言是一个解释性语言,所谓解释性是指不象其他高级语言需要通过编译和联结,它象其他shell语言一样,直接对每条语句顺次解释执行。
Tcl数据类型简单。对Tcl来说,它要处理的数据只有一种——字符串。Tcl将变量值以字符串的形式进行存储,不关心它的实际使用类型。
1.2Tcl命令格式
一条Tcl基本语法为:
command arg1arg2 .... (命令参数1 参数2...)
其中command为Tcl内建命令或者Tcl过程。各条命令可以单独一行,也可以在同一行,在同一行时,需要用“;”来分隔。即:
command1 arg1 ... ; command2 arg2
如以下的输出命令会在输出终端输出一段字符串:
例 1-1 输出一段字符串的例子
%puts "The next line contains an error"
=> The next line contains an error
注意:字符串中如果有空格的话,一定要用””或者{}括起来。因为Tcl语句中各命令参数是以空格来分隔的,如果不用""或{}括起来,字符串中的单词会被误认为多余的参数而出错。
1.3脚本、命令和单词符号
一个TCL脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开
set a 1;set b 2
TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或TAB键隔开。
1.4Tcl脚本文件和source 命令
除了通过交互式执行Tcl命令外,还可以将Tcl命令保存到一个后缀为.tcl的文件内,然后用Tcl的命令source 来执行:
source fileName
目
录
1引言
6
2语法
7
2.1脚本、命令和单词符号
7
2.2置换
(substitution) 7
2.2.1变量置换
(variable subtitution) 8
2.2.2命令置换
(command substitution) 8
2.2.3反斜杠置换
(backslash substitution) 8
2.2.4双引号和花括号
9
2.3注释
9
3变量
10
3.1简单变量
10
3.2数组
11
3.3相关命令 11
3.3.1set 11
3.3.2unset 11
3.3.3append和
incr 12
4表达式
12
4.1操作数
12
4.2运算符和优先级
12
4.3数学函数
13
5List 14
5.1list命令
14
5.2concat命令
: 14
5.3lindex命令
14
5.4llength命令
15
5.5linsert命令
15
5.6lreplace命令
: 15
5.7lrange 命令
: 15
5.8lappend命令
: 15
5.9lsearch 命令
: 16
5.10lsort命令
: 16
5.11split命令
: 16
5.12join命令
17
6控制流
17
6.1if命令
17
6.2循环命令:
while 、
for、
foreach 17
6.2.1while命令
17
6.2.2for命令
18
6.2.3foreach命令
18
6.2.4break和
continue命令
19
6.2.5switch 命令
19
6.1eval命令
19
6.2source命令
19
7过程
(procedure) 20
7.1过程定义和返回值
20
7.2局部变量和全局变量
20
7.3缺省参数和可变个数参数
21
7.4引用:
upvar 21
8字符串操作
22
8.1format命令
22
8.2scan命令
23
8.3regexp命令
23
8.4regsub命令
25
8.5string命令
25
8.5.1string compare ?-nocase? ?-length int? string1 string2 25
TCL、Python和软件测试自动化 77
作者:雷雨后 Email: leiyuhou010@ 控制结构 TCL中使用命令来实现程序控制结构,我们还可以自己编写扩展命令来扩充控制结构。常见的控制结构包括如下几种: 循环控制、条件判断、异常处理和执行脚本。这些结构控制命令都比较简单,和C/C++中的程序控制比较类似。但是在介绍控制结构之前,先有必要介绍一下Tcl中的布尔类型。 Boolean类型 再次强调,TCL中一切都是字符串,没有类型。这里所说的Boolean类型,指的是在条件判断的时候,什么东西被当作True,什么被当作False。请记住如下规则: 1. 字符串:Yes,Y,True,T,On。不管大小写,当作条件来判断时,会被认为是True; 2. 字符串:No,N,False,F,Off。不管大小写,当作条件来判断时,会被认为是False; 3. 数字0(整数或者浮点)会被当作False,任何非0的整数或者浮点数都会被当作True; 例如: % while 0.00e23 "puts ccc;break;" ;#False % while 0. "puts ccc;break;" ;#False % while 0.1 "puts ccc;break;" ;#True ccc % while T "puts ccc;break;" ;#True ccc % while 1023 "puts ccc;break;" ;#True ccc % while T "puts ccc;break;" ;#True ccc 条件判断 TCL中的条件判断主要是两个命令:if和switch。 TCL、Python和软件测试自动化 78
作者:雷雨后 Email: leiyuhou010@ if…else if命令的格式如下: if expr1 ?then? body1 elseif expr2 ?then? body2 elseif ... ?else? ?bodyN? 可以看见,if命令的参数then是可以省略的。这给喜欢Pascal风格和C风格的不同的编程人员,都带来了怀旧的机会。Pascal中then是必须的。C中是没有then的。 if命令中的条件表达式expr可以写成多行,只要是一个字符串都可以。如果写成多行,那么最好加上then,这样看起来就比较方便。 这个命令的具体执行我就不详细解释了。要注意的是最后的else,如果没有else,那么就不能有bodyN,如果有了else,就必须有bodyN。请看例子: if {$vbl == 1} { puts "vbl is one" } elseif {$vbl == 2} { puts "vbl is two" } else { puts "vbl is not one or two" } switch 相比if…else,switch命令则要复杂很多。它有两种语法形式: 1. switch ?options? string pattern body ?pattern body ...? 2. switch ?options? string {pattern body ?pattern body ...?} 两种形式功能上完全等价,我们一般建议采用第二种,它和C语言的语法比较接近:所有的候选值和对应的代码全部都放在一个花括号中。但是如果需要对pattern和body等进行替换,那么第一个形式就比较方便。 switch的选项参数可以为: 1. -exact:这是默认情况,表示参数string和模式pattern的精确匹配; 2. -glob:表示采用glob模式进行匹配。匹配方法参考string match命令; 3. -regexp:表示采用正则表达式进行匹配,string是字符串,而pattern是正则表达式; 4. --:表示选项参数到此为止,后面的是参数string。这是为了防止参数string的第一个字符就是“-”而引起非法选项的错误。 该命令的执行过程:根据选项指定的匹配模式,逐个将string和pattern进行匹配,如果匹配成功,那么就执行pattern后面对应的代码,并且返回该代码的结果。如果最后的一个模式是default,安么它匹配任意字符串。如果string没有一个匹配成功并且没有default,那TCL、Python和软件测试自动化 79