文章目录
实际脚本用例的讲解请看:tcl脚本用于questasim回归测试
介绍
TCL是一种解释执行的脚本语言。提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。
TCL的解释器是用一个C\C++语言的过程库实现的,某种意义上,可以将TCL看做一个C库,每个应用程序都可以根据自己的需要对TCL语言进行扩展。
扩展后的TCL语言将继承TCL核心部分的所有功能,包括核心命令、控制结构、数据类型、对过程的支持等。
学习核心:
- TCL脚本执行依赖于解释器(逐行执行,没有编译这回事);
- TCL有效命令行以命令+字符串(结合空间间隔符形成);
- 明白**置换( $ 、[ ]、 \ )和引用( " " 、{ } )**的差别与联系;
- 明白命令eval、expr、source、exec的差别;
- 掌握 { * } 配合glob等返回list后的操作。
置换
-
一个TCL脚本可以包含一个或多个命令。命令之间必须要用换行符或者分号隔开,例如:
# 以下均合法 set a 1 #设置a的值为1 set b 2 #设置b的值为2 set a 1;set b 2 set a ##读取a的值,结果为1 -
tcl的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必需用空格或Tab隔开
普通置换
TCL解释器在分析命令时,会把所有的命令当做字符串,例如
%set x 10 #定义变量x,并把x的值赋值为10,这个10也是字符串,而不是我们认为的int等类型
%set y x+100 #定义变量y,并把y的值赋值为字符串 x+100 ,但注意并非是 110 或者10+100,因为把x当做字符串来看待
变量置换
变量置换有一个 $ 符号标记,如下:
%set x 10
%set y $x+100 #此时y为字符串 10+100,因为x被置换成了10
#由此我们发现,还不是我们想要的y=110的结果
命令置换
命令置换是由符号 [ ] 括起来的命令及参数,
%set x 10
%set y [expr $x+100] #此时y=110
注解:
- 当TCL解释器。从左到右遇到第一个"[" 时,就会把随后的expr当做一个命令,从而激活expr对应的c/c++过程。
- 因为中括号[ ]的存在,tcl会把中括号里面的expr $x+100当做一个新的运算来计算,
反斜杠 \ 置换
类似其他语言中的转义字符,在单词符号中插入如换行符、空格、[ 、$等作为特殊符号时,就需要用到 **\ **符号来置换。
%set msg multiple\ space #添加了一个空格,结果为“multiple space”
花括号{ }和双引号“”
除了使用反斜杠以外,还可以使用花括号{ }和双引号"",也可以将一些具有命令作用的字符作为特殊字符使用。
双引号""
- tcl解释器对于双引号""中的各种分隔符将不做处理,但是对换行符以及 $ 和 [ ] 两种置换符会照常处理
%set x 10
%set y "$x ddd" #结果为“10 ddd”
花括号{ }
- 如果变量中有字母、数字或下划线的字符,又要用置换,可以用花括号{ }把变量括起来。
%set a 2
%set a.1 4 # a.1的值为4
#我们期待 a.1这个


1万+

被折叠的 条评论
为什么被折叠?



