tcl脚本语言学习
TCL脚本入门教程
![TCL脚本入门教程](https://img.taocdn.com/s3/m/23ed2df7998fcc22bcd10de9.png)
系统学习TCL脚本入门教程版本:1. 0作者:次目录1TCL语法 (4)1.1 简介 (4)1.2 运行环境 (4)1.3 本文约定 (4)1.4 参考资料 (4)2引言 (5)2.1 第1课:简单文本输出 (5)2.2 第2课:给变量赋值 (5)2.3 第3课:命令的赋值与置换一 (6)2.4 第4课:命令的赋值与置换二 (7)2.5 第5课:命令的赋值与置换三 (7)2.6 第6课:算数运算 (8)2.7 第7课:文本比较-SWITCH应用 (9)2.8 第8课:数值比较-IF应用 (10)2.9 第9课:WHILE循环 (11)2.10 第10课:FOR循环和INCR (11)2.11 第11课:过程PROC (12)2.12 第12课:过程PROC的参数定义 (13)2.13 第13课:变量的作用域 (13)2.14 第14课:LIST结构 (14)2.15 第15课:LIST项的增删改 (15)2.16 第16课:更多LIST相关 (16)2.17 第17课:字符串函数 (17)2.18 第18课:更多字符串函数 (17)2.19 第19课:修改字符串函数 (20)2.20 第20课:正则表达式 (21)2.21 第21课:更多正则表达式 (22)2.22 第22课:数组 (24)2.23 第23课:更多数组相关 (25)2.24 第24课:文件存取 (28)2.25 第25课:文件信息 (30)2.26 第26课:TCL中的子进程调用-OPEN & EXEC (33)2.27 第27课:命令或者变量是否存在-INFO (34)2.28 第28课:解释器状态-INFO (35)2.29 第29课:过程信息-INFO (36)2.30 第30课:模块化-SOURCE (37)2.31 第31课:建库-UNKNOWN & INFO LIBRARY (38)2.32 第32课:创建命令-EV AL (40)2.33 第33课:在EV AL中应用FORMAT & LIST (40)2.34 第34课:不使用EV AL替换-FORMAT & SUBST (42)2.35 第35课:改变工作目录-CD & PWD (43)2.36 第36课:调试和错误-ERRORINFO & ERROR C ODE & CATCH (44)2.37 第37课:调试-TRACE (45)2.38 第38课:命令行参数和环境串 (46)2.39 第39课:TIME & UNSET (47)2.40 第40课:SOCKET & FILEEVENT & VWAIT (49)2.41 第41课:日期时间-CLOCK (51)2.42 第42课:I/O通道-FBLOCKED & FCONFIG (53)2.43 第43课:子解释器 (56)2.44 第44课:数据库操作 (57)2.45 第45课:函数或过程数组的输入和输出方法 (59)2.46 第46课:INFO的用法 (60)2.47 第47课:多线程 (61)3跋 (75)1TCL语法1.1简介作为脚本语言,tcl语法简单而功能强大。
TCL入门
![TCL入门](https://img.taocdn.com/s3/m/1e118c6e1eb91a37f1115c53.png)
Tcl_Interp * interp,
int argc, char* argv[]);
int Tcl_AppInit(Tcl_Interp *interp);
#define MAX_WORD_LEN 32
int GetWordFromStr(const char* pStrSource,char * pDestStr,int len); //这里更改为你好测试的函数定义。
int Tcl_EXGetWord(ClientData clientData,
Tcl安装配置
1. 安装ActiveTcl 8.4(包括Expect扩展)
下载地址:
/ActiveTcl/Windows/8.4.15/ActiveTcl8.4.15.0.280619-win32-ix86-threaded.exe
Expect简介
一个叫做fsck的Unix文件系统检查程序,可以从Shell里面用-y或者-n选项来执行。 在手册[1]里面,-y选项的定义是象这样的。
“对于fsck的所有问题都假定一个“yes”响应;在这样使用的时候,必须特别的小心,因为它实际上允许程序无条件的继续运行,即使是遇到了一些非常严重的错误”
相比之下,-n选项就安全的多,但它实际上几乎一点用都没有。这种接口非常的糟糕,但是却有许多的程序都是这种风格。 文件传输程序ftp有一个选项可以禁止交互式的提问,以便能从一个脚本里面运行。但一旦发生了错误,它没有提供的处理措施。
Expect是一个控制交互式程序的工具。他解决了fsck的问题,用非交互的方式实现了所有交互式的功能。Expect不是特别为fsck设计的,它也能进行类似ftp的出错处理。
Expect被设计成专门针和交互式程序的交互。一个Expect程序员可以 写一个脚本来描述程序和用户的对话。接着Expect程序可以非交互的运行“交互式”的程序。写交互式程序的脚本和写非交互式程序的脚本一样简单。 Expect还可以用于对对话的一部分进行自动化,因为程序的控制可以在键盘和脚本之间进行切换。
TCL脚本入门教程
![TCL脚本入门教程](https://img.taocdn.com/s3/m/bd40df2cb94ae45c3b3567ec102de2bd9605decb.png)
TCL脚本入门教程```puts "Hello, TCL!" ;# 输出 Hello, TCL!set name "John" ;# 定义一个变量 nameputs "My name is $name." ;# 输出 My name is John.```在这个例子中,第一行的`puts`命令用于输出文本到控制台,第二行的`set`命令用于定义一个变量,第三行的`puts`命令输出带有变量的文本。
在TCL中,变量需要以`$`开头。
- `set`:用于定义和修改变量的值。
- `if`:用于条件判断,根据条件执行不同的代码块。
- `for`:用于循环执行代码块一定的次数。
- `while`:用于在条件满足的情况下循环执行代码块。
- `proc`:用于定义和调用过程(函数)。
- `expr`:用于进行数学运算和表达式求值。
```set age 25set height 1.75set 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 $fileputs $content```这个例子中,`open`命令用于打开一个文件,`read`命令用于读取文件内容,`close`命令用于关闭文件。
2024版TCL教程(中文)
![2024版TCL教程(中文)](https://img.taocdn.com/s3/m/81625551974bcf84b9d528ea81c758f5f61f2928.png)
这是一本经典的TCL/TK入门书籍,详细介绍了TCL语言的基础知识和常用命令,以及如何使 用TCL/TK进行GUI编程。
《TCL编程之道》
这本书深入探讨了TCL编程的高级技巧和最佳实践,适合有一定TCL基础的读者。
TCL博客
一些专注于TCL技术的博客也是学习的好资源,如"TCL专家博客"、"TCL技术分享"等,这些 博客通常会分享一些实用的技巧和经验。
MySQL、PostgreSQL、SQLite等, 并提供连接示例代码。
连接数据库
介绍如何在TCL中执行SQL语句, 包括查询、插入、更新和删除等操 作,并提供相应的示例代码。
执行SQL语句
讲解如何处理查询结果集,包括遍 历结果集、获取字段值和元数据等 操作,并提供相应的示例代码。
TCL实例分析
05
THANKS.
数据遍历
通过`foreach`命令遍历数组或列表中的每个元素,并对每个元 素执行相应的操作。
文件操作与I/O流
文件读写
TCL提供了文件读写命令,如`open`、`read`、`write`等,用于实 现文件的读写操作。
文件路径处理
TCL支持文件路径的处理,如路径拼接、路径分解等,方便进行文 件操作。
错误处理
TCL提供了错误处理机制,如使用`catch`命令捕获异常并处理。通过错误处理,可以确 保程序的稳定性和可靠性。
TCL高级特性
03
过程与函数
过程定义
01
TCL支持自定义过程,可以通过`proc`关键字定义过程,并指定
过程名和参数列表。
函数调用
02
通过过程名及参数列表调用已定义的过程,实现代码复用和模
Tcl脚本测试入门
![Tcl脚本测试入门](https://img.taocdn.com/s3/m/32d9747d5acfa1c7aa00cc9c.png)
Tcl脚本测试入门Tcl简介Tcl是一种非常简单的编程语言,如果你以前曾经学过编程,那么你只要学习几个小时就可以编写出一些有趣的Tcl程序。
本文将对Tcl的功能做一个大概的介绍。
一般来说,读完本文之后,你就可以开始独立的编写一些简单的Tcl 脚本了;不过,要想获得更全面的认识,我们建议你还是去参考几本目前已经出版的 Tcl书籍。
基本语法Tcl脚本由一些被换行符或是分号分开的命令所组成。
命令都有相同的基本格式,如下面的例子所示:expr 20 + 10该命令计算20加10的和,并返回结果30。
你可以把这个例子以及本文中的所有其它的例子键入到tclsh这样的Tcl应用程序中来验证它们;在一个命令结束后,tclsh将打印出它的结果。
每个Tcl命令都含有一个或多个被空格分开的单词,在这个例子中有4个单词:expr,20,+,和10。
第一个单词是一个命令名,其余的单词是这个命令的参数。
所有的Tcl命令都含有一些单词,但不同的命令对他们的参数有不同的处理方式。
expr命令把它的所有参数看作是一个算术表达式,计算表达式的结果,并以字符串的形式返回结果。
在expr命令中,单词之间的分隔不是很重要:同样的命令你可以写成这种形式:expr 20+10不过,对大部分的命令来说,单词的结构是很重要的。
每个单词都会用于不同的目的。
所有的Tcl命令都返回结果。
如果一个命令产生了没有意义的结果,那么它将返回一个空字符串作为它的结果。
变量Tcl允许你在变量中保存数值,并且可以在后续的命令中使用这些数值。
set命令用于对变量进行读写操作。
比如,下面的命令对变量x赋值为32。
set x 32这个命令返回变量的新值。
你可以让set只带一个参数来读出变量的数值:set x你不需要在Tcl中声明变量:变量在第一次set的时候被自动创建。
Tcl变量没有类型:任何值可以赋给任何变量。
要想在一个命令中使用变量的值,可以采用变量替代,如下例所示:expr $x*3当一个字符$出现在一个命令中的时候,Tcl把跟在它后面的字母和数字看作是一个变量名并且将其替换成变量的值。
TCL脚本语言-9-过程和变量
![TCL脚本语言-9-过程和变量](https://img.taocdn.com/s3/m/f04a626a7e21af45b307a80a.png)
过程和变量前面的章节中我们对过程和变量已经有了较多的接触了,还定义了一些自己的过程,并且对列表和数组等有了深入的了解。
本章节中我们将系统的深入了解TCL中的过程和变量相关的知识。
首先从过程定义开始。
定义过程TCL中,“过程”和“函数”没有差别,这一点和C语言类似。
在这本书当中,TCL的“过程”和“函数”是两个完全等价,可以互相替换的概念和术语。
TCL定义任何过程的语法如下:proc name arglist bodyproc是标准的TCL核心命令之一,用来定义一个过程。
它带有三个参数:过程名字、过程的参数列表以及过程体。
1.过程名字可以是任意的字符串。
当然了,本着易读和可维护性的原则,我们建议按照C语言语法惯例来命名。
如果你喜欢中文,也可以给你定义的过程一个中文名字。
如果定义的过程已经存在了,那么新定义的过程会替换掉原来的定义,这一点和C不同。
在C中,函数是不能够被重复定义的。
2.参数列表用来声明本过程的调用参数形式,它应该是一个TCL列表。
列表的每一个元素就是一个过程的形式参数。
当然列表可以为空,表示本过程不需要参数。
3.过程体是一块TCL脚本,当本过程被调用的时候,就执行该脚本。
4.过程返回值可以直接在body中调用return来返回,如果没有执行return就返回,那么body中最后被执行的那条命令的返回值就是过程的返回值。
TCL中的过程支持递归,包括直接递归和间接递归。
下面我们定义一个阶乘函数:proc Factorial {n} {if {$n==1} {return 1}return [expr {$n * [Factorial [expr $n-1]] }] ;#递归调用}puts [Factorial 4]其中Factorial是过程名;{n}是参数列表,只有一个元素,表示过程Factorial只有一个参数;过程内部通过递归调用来计算参数n的阶乘。
全局、局部TCL中的变量也有作用范围之说。
synopsy的Tcl脚本语言学习笔记
![synopsy的Tcl脚本语言学习笔记](https://img.taocdn.com/s3/m/83ee0cc82cc58bd63186bd91.png)
TCL脚本语言学习(1)当输入的命令较长时,可以使用反斜线 \ 将一行命令分割为几行,例如:set target_library \/home/fzz/synopsys/library/slow.db上面的命令等价于set target_library /home/fzz/synopsys/library/slow.db(2)缩略语命令:Synopsys的命令可以缩略到非含糊的形式,但是在脚本文件中应该少使用缩略命令,因为脚本文件在某些Synopsys的工具或者TCL中的命令易于发生变化,这种变化因为缩略而变得含糊。
(3)可以使用Synopsys中的“history”命令列举或者执行出先前使用过所有命令,例如:dc_shell> history info 5该命令将列举出最近执行过的5跳指令dc_shell> history redo 4该命令将执行在当前 dc_shell中执行过的命令中的第4条指令,这里面redo 后面的数据如不是有效的,则将重复执行最后输入的命令。
例如dc_shell> history redo -4, -4 无效,将重复执行最后输入的有效指令也可以采用快捷键的方式,输入“!!”命令,重新执行命令。
例如:dc_shell> !!set target_library /home/fzz/synopsys/library/slow.db/home/fzz/synopsys/library/slow.db能够重复执行某条指令可以使用Dc_shell> !5(4)以命令行方式获得help使用-help 命令获得帮助Dc_shell> echo –help同样可以使用for命令获得help的所有命令,输入方式如下:dc_shell> help for*也可以获得特殊的命令组的所有命令的列表,通过输入命令集合的名字,例如:dc_shell> help procedures使用man命令也可以使用man命令获取Synopsys中获得帮助的相应命令,例如:dc_shell > man query_objects(5)Command Status命令状态时命令返回值,所有的命令都返回一个一个字符串或者 null,默认时命令状态值返回控制窗口,例如:dc_shell >set total_cells 0 ,这里定义了一个新的变量dc_shell >incr total_cells(6)Quoting 引用使用quoting disable一些特殊字符的含义(例如:[],$ and ;)dc_shell> set a 5; set b 1010dc_shell> echo {[expr $b - $a]} evaluates to [expr $b - $a][expr $b - $a] evaluates to 5双引号标示特殊的较弱的quoting,使用举例如下:dc_shell> Set A 10; set B 44dc_shell> ech o “A is $A; B is $B.\nNet is [expr $A - $B].”chapter 2 Tcl基础Variables变量dc_shell> set buf_name 1si_10K/B1I1si_10K/B1Idc_shell> set a 11dc_shell> set b 2.5Tcl中所有的变量都是字符串,Tcl不识别变量是整数或者实数的变量dc_shell> set b 1010dc_shell> incr b11dc_shell> incr b -65Incr的默认增加值是1,如果增加的不是整数值,那么则会报错,例如:dc_shell> set b 2.42.4dc_shell> incr bError …为了查找一个变量是否存在,可以使用tcl的info exists命令,例如说,为了查看变量total_cells是否存在,键入:dc_shell> info exists total_cells如果变量存在,则info exists返回1,否则,返回0。
TCL语言学习入门
![TCL语言学习入门](https://img.taocdn.com/s3/m/54268b42852458fb770b56fb.png)
语言简介
Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为"tickle”。实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。它有一个简单的语法和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。
1
2
set a 20; set b 4;
set c [expr $a/$b];#此时的c的值为5
除此之外,expr还能够识别一些函数及其返回值如下:
abs(x) x的绝对值
round(x) x舍入后得到的整数值
sin(x) x的正弦
…………………………………..
举个例子:
1
set a [expr sin(0.3)];#计算0.3的正弦
switch $element{
# 判断element的值
}
}
for是最常用的循环。其基本结构为:
for {initialization} {condition} {increment} {body}
例如:
1
for{set i 0} {$i< 10} {incr i} {puts $i;} #将打印出0到9
1
2
TCL中文教程范文
![TCL中文教程范文](https://img.taocdn.com/s3/m/692a6ec103d276a20029bd64783e0912a2167c08.png)
TCL中文教程范文一、TCL简介TCL是一种解释性的脚本语言,由John Ousterhout于1988年开发。
它被设计用于与其他软件组件进行交互,并提供了强大的编程和脚本功能。
TCL提供了丰富的内置函数和命令,可以用于控制流、字符串处理、文件操作等。
二、TCL语法1.注释在TCL中,使用“#”符号来表示注释。
一行以“#”开头的内容将被视为注释,不会被执行。
2.变量TCL中的变量无需声明即可使用。
您可以使用“set”命令来定义变量,如下所示:```set variable value```例如,要定义一个名为“name”的变量,可以使用以下命令:```set name "John"```类似地,您可以使用“$”符号来使用变量的值,如下所示:```puts $name```3.控制流TCL提供了多种控制流语句,如条件语句(if)、循环语句(while、for)、分支语句(switch)等。
以下是几个示例:-条件语句:```if {$x > $y}puts "x is greater than y"} elseif {$x == $y}puts "x is equal to y"} elseputs "x is less than y"```-循环语句:```set i 0while {$i < 10}puts $iincr ifor {set i 0} {$i < 10} {incr i}puts $i```-分支语句:```switch $option"a"puts "Option a selected"}"b"puts "Option b selected"}defaultputs "Invalid option"}```4.字符串处理TCL提供了丰富的字符串处理功能,如连接字符串、截取字符串、查找子字符串等。
TCL脚本语言-2-基本词法和概念
![TCL脚本语言-2-基本词法和概念](https://img.taocdn.com/s3/m/8f89bd3887c24028915fc30a.png)
基本词法和概念在进一步深入了解TCL的语法之前,弄清楚TCL脚本的几个基本概念以及TCL解释器解释执行一个脚本的基本流程,是很有必要的。
一切都是命令和及其参数TCL脚本语法的本质其实非常简单:1.一个脚本是由一个或多个命令以及其参数顺序排列而成;命令之间用换行字符或者分号分隔;TCL中的一切都是命令及其参数。
2.一个命令语句包括一个命令字以及零个或多个该命令的参数;命令和参数以及参数之间用空格或者Tab分隔;3.如果任何地方出现可以进行置换的操作,那么就会按照规则进行置换;例如下面的一段代码实际上是由三个命令组成的:class CPerson { ;#第一条命令class及其两个参数protected variable m_name ;#成员变量,保护类型,可以被继承protected variable m_sexconstructor {name sex} { ;#构造函数set m_name $nameset m_sex $sex}public method PrintInfo {} { ;#public方法,输出对象信息,可以被继承puts "CPerson [GetInfo]" ;#调用了成员函数GetInfo}public method GetInfo {} {return "name=$m_name; sex=$m_sex" ;#返回对象信息}} ;#第一条命令结束。
CPerson a “Lei Yuhou” Male ;#第二条命令a PrintInfo ;#第三条命令上面代码很长,但是实际上只有三个命令:第一个是class命令,带有两个参数,第一个是类名,第二个是类的定义体;第二个命令是CPerson命令,实际上刚才的class命令在执行之后就定义了一个新的TCL命令,命令名就是我们声明的类名;第三个命令的命令字是a,这是我们刚才创建的对象,实际上CPerson命令在执行的时候又创建了一个TCL命令,其名字就是我们给出的对象名。
TCL语言
![TCL语言](https://img.taocdn.com/s3/m/9c3dbb36a36925c52cc58bd63186bceb19e8ed9f.png)
TCL语言
TCL(Tool Command Language)是一种通用的脚本语言,最初设计用于自动
化软件测试。
它具有简单易学的语法结构和强大的扩展能力,可以在多个操作系统上运行。
TCL语言主要用于编写脚本来控制和配置软件应用程序。
TCL的特点
TCL语言具有以下特点:
•易学易用:TCL语法简单清晰,入门门槛低,适合初学者快速上手。
•跨平台:TCL脚本可以在多个操作系统上运行,包括Windows、Linux、Unix等。
•模块化:TCL支持模块化开发,可以将功能分割成多个模块,提高代码可复用性。
•动态类型:TCL是一种动态类型语言,变量的类型在运行时确定,灵活性较高。
•强大的扩展能力:通过TCL的扩展包,可以方便地扩展功能,适应多样化的需求。
TCL的应用领域
TCL语言在以下领域有着广泛的应用:
•自动化测试:TCL最初设计用于自动化软件测试,可以通过编写TCL 脚本来进行自动化测试。
•网站开发:TCL可以用于构建Web应用程序,通过TCL的Web扩展包可以实现服务器端的动态网页生成。
•网络编程:TCL提供了丰富的网络编程库,可以用于开发网络应用程序。
•嵌入式开发:TCL语言可以作为嵌入式系统的脚本语言,用于控制和配置嵌入式设备。
•图形界面开发:TCL/TK是一个常用的图形用户界面开发工具包,可以用来创建GUI应用程序。
TCL语言示例
下面是一个简单的TCL脚本示例,展示了如何输出。
tcl教程
![tcl教程](https://img.taocdn.com/s3/m/160b491c814d2b160b4e767f5acfa1c7aa008236.png)
tcl教程TCL(工具命令语言)是一种脚本语言,主要用于实现自动化工作流程、快速开发小型工具和控制系统等应用。
它具有简单易学、功能丰富以及可移植性好等特点。
本教程将带你从基础开始逐步学习TCL的语法和常用命令,并通过实例演示帮助你快速掌握TCL编程。
1. TCL的安装和运行环境配置首先,你需要下载并安装TCL的最新版本。
在安装过程中,请根据操作系统选择正确的安装文件,并按照向导进行安装。
安装完成后,你可以在命令行界面中输入"tclsh"来启动TCL解释器,并进入TCL编程环境。
2. TCL脚本的基本结构和语法一个TCL脚本通常由一系列的命令组成,每条命令占据一行。
TCL命令以"$"符号开头,如"$command argument1 argument2"。
TCL的注释以"#"符号开头,后面的内容将被忽略。
以下是一个简单的TCL脚本示例:```tcl#!/usr/bin/tclsh# 输出Hello World!puts "Hello World!"```3. 变量和数据类型TCL支持多种数据类型,包括整数、浮点数、字符串、列表和字典等。
你可以使用"set"命令定义一个变量,并使用"$"符号在其他地方引用该变量。
以下是一些例子:```tclset name "Tom"set age 18set pi 3.14159set fruits {apple banana orange}set person(name) "John"```4. 控制流结构TCL提供了常见的控制流结构,如条件语句和循环语句,用于控制程序的执行流程。
以下是一些控制流语句的示例:if语句:```tclif {$age >= 18} {puts "成年人"} else {puts "未成年人"}```while循环语句:```tclset num 1while {$num <= 10} {puts $numincr num}```5. 文件操作TCL提供了一组用于文件操作的命令,如打开文件、读取文件、写入文件和关闭文件等。
tcl脚本语言学习
![tcl脚本语言学习](https://img.taocdn.com/s3/m/33da445d1711cc7931b716f5.png)
4、llength 命令:
用于获得一个列表的元素个数。 set l "a 3 k";llength $l; =>3
5、lindex 命令:
返回列表中指定位置的特定元素,它是从 0 开始计数。 set x { 1 4 5 7 8 0 9};lindex $x 6; =>9 (1 表示第 0 个数,所以第 6 个 数为 9) 。
3、scan:
根据格式描述符来解析一个字符串并将对应值赋给后面的变量。 返回值是成 功转换的个数。 语法:scan string format var?var?..... %c 的作用与 format 的正好相反, 是将一个 ASCII 字符转换为对应的整数值。 与 format 的区别: format 是将多个目标变量转换成一个字符串, scan 是将一 个字符串分解为多个变量。 例如:set num [scan "abcABC" "%c%c " var1 var2] ;puts "$var1 $var2"; 输出:=> 97 98 注意:这里其实只是对 a、b 进行了转换,后面的 cABC 没有转换,要想转 换,只要多写几个%c,后面多定义几个变量就可以了。并且%c 的个数与变量的 个数要一一对应。
8、lsearch 命令:
在给定列表中搜索与匹配字符串匹配的元素,成功就返回正确的元素索引, 否则返回-1。 set l1 [list This is one list] ;set index [lsearch $l1 l*] ;=>3
9、lsort 命令:
lsort 命令实现对列表的排序。排序操作不影响原表,而是返回排序之后的 新表。 排序的方式有多种选择,可以通过-ascii、-dictionary 、–integer、-real 来指 定基本排序类型,然后使用-increasing、decreasing 指定排列方式,默认为-ascii、 -increasing 。要注意 ASCII 排序时使用字符编码;而 dictionary 排序方式整合 大小写,并将包含的数字以数值大小来处理。 set list "a Z z n100 n200 M p Hl hL m 1 20" ; lsort -ascii $list ; =>1 20 Hl M Z a hL m n100 n200 p z
TCL Scripting Fundamentals(TCL 快速入门上手指导)
![TCL Scripting Fundamentals(TCL 快速入门上手指导)](https://img.taocdn.com/s3/m/e937764f852458fb770b56e0.png)
Contents1. WWWH About TCL .............................................................................................................. - 2 -1.1 . What is TCL ................................................................................................................. - 2 -1.2 . Why TCL ..................................................................................................................... - 2 -1.3 . When shall we use TCL ............................................................................................... - 3 -1.4 . How to program using TCL ......................................................................................... - 3 -2. TCL Basics .............................................................................................................................. - 4 -2.1 . Variables and Substitution ............................................................................................ - 4 -2.1.1 Command set and unset ...................................................................................... - 4 -2.1.2 Command append................................................................................................ - 4 -2.1.3 Command incr ..................................................................................................... - 5 -2.2 . Math Expressions ......................................................................................................... - 5 -2.2.1 General Math Expressions .................................................................................. - 5 -2.2.2 Math Functions ................................................................................................... - 6 -2.3 . String Manipulation ..................................................................................................... - 7 -2.3.1 Command string .................................................................................................. - 7 -2.3.2 Command format .............................................................................................. - 12 -2.3.3 Regular Expression ........................................................................................... - 14 -2.4 . List Manipulation ....................................................................................................... - 18 -2.4.1 Basic TCL List Commands ............................................................................... - 18 -2.4.2 Advanced TCL List Commands ........................................................................ - 20 -2.5 . File Operations ........................................................................................................... - 23 -2.5.1 Command open ................................................................................................. - 23 -2.5.2 Command file .................................................................................................... - 26 -2.6 . Control Flow .............................................................................................................. - 29 -2.6.1 The if command ................................................................................................ - 29 -2.6.2 Looping and Loop Control commands .............................................................. - 30 -3. TCL extensions ..................................................................................................................... - 32 -3.1 . TCL Package Expect .................................................................................................. - 32 -3.2 . TCL Package Tnm ...................................................................................................... - 33 -4. Appendix ............................................................................................................................... - 36 -4.1 . Appendix A, String Commands .................................................................................. - 36 -4.2 . Appendix B, List Commands ..................................................................................... - 37 -4.3 . Appendix C, Flow Control Commands ...................................................................... - 38 -4.4 . Appendix D, Math Functions ..................................................................................... - 38 -4.5 . Appendix E, References ............................................................................................. - 39 -1. WWWH About TCL本文是针对那些对TCL没有或者有一些基础认识的测试工程师,这个标题中的WWWH 并不是一个英文单词,而是一个缩写,这个缩写所提出的问题也基本上是本文所要提出并解决的问题;他们分别是What—什么是TCL、Why—为什么要使用TCL、When—什么时候我们该使用TCL、How—如何使用TCL。
TCL培训教程2024
![TCL培训教程2024](https://img.taocdn.com/s3/m/9334c968ae45b307e87101f69e3143323968f5f7.png)
引言:TCL培训教程(二)作为继TCL培训教程(一)之后的延续,旨在进一步深入介绍TCL脚本语言的各个方面。
本文将通过引言概述、正文内容和总结来详细探讨TCL的高级特性与应用,并提供详细的示例和实践指导。
概述:在本文中,我们将重点介绍TCL中的5个大点,包括TCL脚本的文件操作、正则表达式的使用、错误处理和异常处理、TCL的面向对象编程以及和其他编程语言的互操作性。
每个大点将包含5-9个小点,以便更全面地探讨TCL的各个方面。
正文内容:一、TCL脚本的文件操作:1. 文件读取和写入操作:介绍如何使用TCL脚本读取和写入文件,并讨论文件的打开和关闭操作。
2. 文件操作函数:详细介绍TCL中用于文件操作的常用函数和命令,如文件重命名、文件删除等。
3. 文件路径处理:讨论如何处理文件路径,包括相对路径和绝对路径的转换。
4. 文件权限和属性:介绍如何获取和修改文件的权限和属性信息,以及相关的TCL命令。
5. 文件夹操作:介绍如何操作文件夹,包括创建文件夹、删除文件夹以及遍历文件夹内的文件。
二、正则表达式的使用:1. 正则表达式的基本语法:介绍正则表达式的基本语法和元字符的使用方法。
2. 正则表达式的匹配与替换:详细探讨如何使用TCL的正则表达式进行字符串的匹配和替换。
3. 正则表达式的捕获组:介绍如何使用捕获组来提取正则表达式匹配的子串。
4. 正则表达式的高级应用:探讨正则表达式在TCL中的高级应用,如贪婪匹配、非贪婪匹配等。
5. 正则表达式的性能优化:讨论如何优化正则表达式的性能,避免正则表达式的过度复杂。
三、错误处理和异常处理:1. 错误处理的基本概念:介绍错误处理的基本概念和原则,以及TCL内置的错误处理机制。
2. 错误处理命令:详细介绍TCL中的错误处理命令,如catch、error、return等。
3. 异常处理的基本原则:讨论异常处理的基本原则和最佳实践。
4. 异常处理命令:介绍TCL中的异常处理命令,如try、throw等。
脚本语言培训-文档资料
![脚本语言培训-文档资料](https://img.taocdn.com/s3/m/0bbc0b93c77da26925c5b0ad.png)
2、TCL的语法
2-4、双引号和花括号 除了使用反斜杠外,TCL提供另外两种方法来使得解释器把分隔符和置换符等特 殊字符当作普通字符,而不作特殊处理,这就要使用双引号(“”)和花括号({})。 TCL解释器对双引号中的各种分隔符将不作处理,但是对换行符 及$和[]两种置换 符会照常处理。 Example: set a 1;set b 2 puts “c = [expr $a+$b]”
TCL脚本语言培训
制作:某某部 时间:2019-1-1
制作:测试部 日期:2019-03-12
培训目的
使没有接触过TCL脚本语言的同 事对TCL脚本语言的基础概念和 基础知识有一定的了解。可以使 用TCL脚本语言进行简单的编程。
学习重点
1、TCL脚本语言介绍 2、TCL的语法 3、TCL的变量 4、TCL的表达式 5、TCL常用命令 6、TCL的控制 7、TCL的过程 8、TCL的字符串操作 9、TCL的list 10. 学习TCL的一些建议和方法
TCL脚本语言培训
2、TCL的语法
简单的讲:
TCL语言的语法就是一些TCL解释器怎样对TCL命令进行分析的规则的集合。
TCL命令的基本语法为:
command arg1 arg2 arg3 …
TCL脚本语言培训
2、TCL的语法
2-1、脚本、命令和单词符号
一个TCL脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开。在 所有TCL脚本中,系统内部的命令名是小写格式 Example: set a 100 set b 101 set c 102;set d 103 TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则 是这个命令的参数,单词之间必须用空格或TAB键隔开 。命令之间是可以嵌套的 Example: set a 100 set b [expr $a +1]
TCL脚本语言-11-面向对象编程
![TCL脚本语言-11-面向对象编程](https://img.taocdn.com/s3/m/ee01d54569eae009581bec15.png)
puts [array get CTest::a] 执行上面的代码,结果如下:
1 ONE 2 TWO 3 THREE 还有读者会问:可不可以在类的外面用专门的代码来进行初始化设置,就好比 C++中那 样:
class CTest { static int a[100];
}; int CTest::a[100] = {0,1,2,3,4}; 对于 public 类型的变量,这样写是可以的。但是对于 protected 等类型,就不行了。最 好的解决方法就是直接在类的定义过程中,调用 array set 或者 set 来完成。
constructor arglist ?init? body 构造函数以关键字 constructor 开始,后面跟着构造函数的参数列表,然后是可选的初 始化列表,最后是函数定义部分。 和普通的函数定义唯一的差别在于这里有一个可选的 init 部分: 1. 在这里我们可以直接调用基类的构造函数,对基类进行初始化。并且参数部分 arglist
puts [a cget –m_b]
;#错误,m_b 是 private 的
一个类的成员变量如果是 public 的,可以通过对象的 configure 和 cget 方法来设置和查 询该成员变量的值。这个成员变量名字见面加上一个“-”,就成了该类的属性。
configure 的时候,如果变量有 config 属性,那么就会执行 config 语句块。例如刚才的 例子中,a configure –m_a 200 语句,会把对象 a 的成员变量 m_a 设置为 200,并且会执行其 对应的 config 代码,所以会打印出“Config:200”的结果。
#Description 方法,画出该图形 public method Description {} {
Tcl脚本语言教程
![Tcl脚本语言教程](https://img.taocdn.com/s3/m/85ccfe13f18583d0496459f8.png)
Tcl教程TCL语法■脚本、命令和单词符号 (2)■置换(substitution) (2)■注释 (5)变量■简单变量 (5)■数组 (6)■相关命令 (6)表达式■操作数 (7)■运算符和优先级 (7)■数学函数 (8)List■list命令 (10)■concat命令 (10)■lindex命令 (11)■llength命令 (11)■linsert命令 (11)■lreplace命令 (11)■lrange 命令 (11)■lappend命令 (12)■lsearch 命令 (12)■lsort命令 (13)■split命令 (13)■join命令 (13)控制流■if命令 (13)■循环命令:while 、for、foreach (14)■eval命令 (15)■source命令 (16)过程(procedure)■过程定义和返回值 (16)■局部变量和全局变量 (17)■缺省参数和可变个数参数 (17)■引用:upvar (18)字符串操作■format命令 (19)■scan命令 (20)1■regexp命令■regsub命令■string命令文件访问■文件名■基本文件输入输出命令■随机文件访问■当前工作目录■文件操作和获取文件信息错误和异常■错误■从TCL脚本中产生错误■使用catch捕获错误■其他异常深入TCL■查询数组中的元素■info命令TCL语法> 脚本、命令和单词符号一个TCL脚本可以包含一个或多个命令。
命令之间必须用换行符或分号隔开,下面的两个脚本都是合法的:set a 1set b 2或set a 1;set b 2TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或TAB键隔开。
TCL解释器对一个命令的求值过程分为两部分:分析和执行。
在分析阶段,TCL 解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换(substitution);在执行阶段,TCL 解释器会把第一个单词当作命令名,并查看这个命令是否有定义,如果有定义就激活这个命令对应的C/C++过程,并把所有的单词作为参数传递给该命令过程,让命令过程进行处理。
tcl脚本语言(下)
![tcl脚本语言(下)](https://img.taocdn.com/s3/m/4e9bacdfce2f0066f53322a5.png)
TCL脚本语言
❖ 文件访问 ❖ 错误和异常 ❖ 查询数组中的元素 ❖ Info命令 ❖ 历史记录
文件访问
❖ 基本文件输入输出命令 open命令 语法:open name ?access? 功能:open命令以access方式打开文件name。返回
式的所有文件的列表。其中switches可以取下面的值:-nocomplain : 允许返回一个空串,没有-nocomplain时,如果结果是空的,就返回错误。 -- :表示switches结束,即后面以‘-’开头的参数将不作为switches。 注意:1、glob 还允许模式中包含‘ 括在花括号中间以逗号分开的多种选 择’ ; 2、如果glob的模式以一斜线结束,那将只匹配目录名 。 3、如果glob返回的文件名列表为空,通常会产生一个错误。但是glob 的在样式参数之前的第一个参数是“-nocomplain”的话,这时即使结果 为空,glob也不会产生错误 。
果命令中有varName就把该行赋给它,并返回该行 的字符数(文件尾返回-1),如果没有varName参 数,返回文件的下一行作为命令结果(如果到了文 件尾,就返回空字符串)。
文件访问
❖ 基本文件输入输出命令 read命令 语法1:read ?-nonewline? fileId 功能:读并返回fileId标识的文件中所有剩下的字节。
文件访问
❖ 文件操作和获取文件信息 file命令
file是有许多选项的常用命令,可以用来进 行文件操作也可以检索文件信息。
文件访问
❖ file命令 file atime name :返回一个十进制的字符串,表示文件name最
Vivado之TCL脚本语言基本语法介绍
![Vivado之TCL脚本语言基本语法介绍](https://img.taocdn.com/s3/m/ec216c8684254b35eefd3483.png)
Vivado之TCL脚本语言基本语法介绍TCL脚本语言Tcl(Tool Command Language)是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,而且VIV ADO也提供了TCL命令行。
最近发现TCL脚本貌似比GUI下操作VIV ADO效率高一些,方便一些。
而且最近跟着官网文档做SDSOC的flatform,发现xilinx 官网的文档里都是用TCL命令来完成操作,于是决心学习一下TCL的语法。
应用程序(如VIV ADO)使用Tcl作为它的命令语言的好处:1 Tcl提供了标准语法,一旦用户掌握了Tcl就可以很容易的发布命令给基于Tcl的程序。
2 Tcl实现了很多的功能,使你的工作变得很方便。
3 TCl可作为程序间通信的接口。
命令格式一条Tcl的命令串包含了多条命令时,用换行符或分号来隔开而每一条命令包含了一个域的集合,域使用空白分开的,第一个域是一个命令的名字,其它的是作为参数来传给它数据类型Tcl只支持一种数据结构:字符串。
所有的命令、命令里的所有的参数、命令的结果、变量全部都是都是字符串。
简单实例:set i 123将123这个字符串赋值给i变量unset i清除变量set i hi将hi这个字符串赋值给i变量set i hi hellohi hello中有空格,所以加引号set i 123;#开始注释注意注释前,要先用分号,把命令结束掉,或者换行注释基本语法和基础命令在VIV ADO中的TCL命令行里,学习这些基本语法(Windows下》开始》所有程序》Xilinx Design Tools 》Vivado xxx 》Vivado xxx Tcl Shell)1》使用$符号引用变量其中puts是打印命令2》使用[]将命令返回值,作为新命令的参数set j 232命令会返回值232新命令就成了set i 232这里稍微复杂一点点的例子:set i a[set j b][set k c]最后的结果就是:j=b ; k=c ; i=abc3》数组数组不需要声明,直接赋值即可,也不必按照顺序来:set i(1)123 ; set i(16)hi当然也支持任意维数的数组:set i(1,2,3)hi引用的时候直接$i(1,2,3)即可parray命令可以打印出一个数组的全部信息:array命令命令格式:array opTIon arrayNameopTIon 是操作选项,有如下可选:name :返回数组的所有元素的名称size :返回数组的长度startsearch :初始化一次遍历,返回一个遍历标识符(searchId),这个searchId在下面用到,(是可以多个遍历同时进行的)下面的命令格式为:array opTIon arrayName searchId-》nextelement :返回数组中下一个元素,如果没有返回空-》anymore :如果接下来还有元素,返回1,否则返回0-》donesearch :结束遍历4》字符串命令string命令命令格式:string opTIon string1 string2option 是操作选项,有如下可选:compare :按照字母的排序方式比较,string1 《,=,》string2,分别返回-1,0,1 match :判断string1和string2是否匹配first :检索string2中第一次出现string1的位置,如果没有出现string1则返回-1last :和first相反trim :从string1中删除开头和结尾的,string2的字符命令格式:string option stringtolower :返回string中的所有字符被转换为小写字符后的新字符串toupper :返回string中的所有字符串转换为大写后的字符串trimleft :,去除string左空白,类似的还有trimrightlength :返回string1的长度range :string range abcdef 1 2,返回输出结果为bcappend命令字符串追加,可以无限拼接set i aappend i b c dputs $ii变量的值就成了abcd,注意append i b c d命令,而不是append $i b c dsplit命令除此之外,expr还能够识别一些函数及其返回值:abs(x)、round(x)、sin(x)、cos(x)等使用方法:expr 表达式6》list列表类似python中的列表,比如:{abc {def {jkl ccc}}}是一个有两个元素的列表abc和{def {jkl ccc}},Tcl中对list的命令有:(首先set l {abc {def {jkl ccc}}},下面实例中将对这个l列表进行操作)需要注意的是:大部分命令都是对$l进行处理,也把就是l的内容字符串取出来,再处理,并不会对l列表的内容造成影响需要注意的是lappend命令,lappend $l abcd是无效的,必须lappend l abcd才能实现列表内容的更新,而且是直接更改列表的内容7》proc自定义函数proc:proc hello {str} {puts hello:$str}需要注意的是,如果不能一行写完,那建议按照如下格式来定义(主要是要将{放到第一行的末尾):第一行:proc+(空格)+函数名+(空格)+{参数}+(空格)+{中间行:逻辑运算最后行:}全局变量global:用于将过程中的局部变量变成外界可操作的全局变量proc hello {} {global xset x hiset i hello}上述代码,执行结果:return命令:proc hello {} {return world}set i [hello]return命令没啥好说的,上述代码的结果是,将i变量赋值为world字符串8》流控制if 流控制这个同样建议按照格式来:第一行:if+(空格)+{表达式}+(空格)+{中间行:逻辑运算第N行:}+(空格)+else+(空格)+{中间行:逻辑运算最后行:}switch流控制例子如下,一目了然:switch 2 {1 {puts 111}2 {puts 222}3 {puts 333}default {puts xxx}}case流控制case abcd in a {puts 111} *bc* {puts 333} default {puts xxx}上述程序对字符串abcd进行判断:条件一:字符串为a条件二:不管字符串的前后字符是啥,只要中间有bc子字符串即可条件三:default9》循环控制foreach循环:假如想要将0,3,2,1按照顺序分别放到上述switch的判决条件(列表)里,输出四个结果,那就需要这个foreach了:foreach i {0 3 2 1} {switch $i {1 {puts 111}2 {puts 222}3 {puts 333}default {puts xxx}}}for循环:TCL的for循环也是很类似C语言的:for {set i 0} {$i 《10} {incr i} {puts $i}初始化i=0,范围i《10 ,循环i=i+1while循环:set i 10while {$i!=5} {puts $iincr i -1}运行的结果,自己就可以想象了10》字符串转为命令eval命令:set a set ; set b i ; set c hello ; eval $a $b $c上述代码就等效于:set i helloeval将字符串的内容,作为命令,执行11》打印输出之前的那个puts命令也是可以打印到命令行,但是,也只是能打印出来而已,而这个format 类似于C中的sprintf(用于格式化输出):format命令:format可以这样用:format %s %d hello 666set i [format %s %d hello 666]scan命令:说到format,刚好一起把scan说了,这两个命令可以看做是相反的一对,前者组合成字符串,后者把字符串拆分后赋值给变量scan 12.34.56.78 %d.%d.%d.%d a b c d将12.34.56.78拆分,并分别赋值给a b c d四个变量,命令返回赋值成功的变量的个数puts命令:puts当然也可以打印到文件中set f [open test.txt w]puts -nonewline $f hello\nputs $f worldclose $fputs -nonewline $f hello\n表示的是强制不换行打印,否则自动追加一个换行符文件系统基本常用操作:gets 》一次读一行文件puts 》写入文件open 》打开文件close 》关闭文件flush 》刷新缓冲区cd命令和shell中的cd一样pwd命令用于查看当前所在的目录open命令打开文件,返回文件描述符命令格式:open 文件名模式,支持6种模式,和其他编程语言中的文件IO,也是很相似的,模式如下:r 模式:打开只读文件(文件必须存在)r+ 模式:打开可读写文件[r+和a+模式可以类比]w 模式:打开只写文件,若文件存在则清空内容;若文件不存在则创建文件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4、llength 命令:
用于获得一个列表的元素个数。 set l "a 3 k";llength $l; =>3
5、lindex 命令:
返回列表中指定位置的特定元素,它是从 0 开始计数。 set x { 1 4 5 7 8 0 9};lindex $x 6; =>9 (1 表示第 0 个数,所以第 6 个 数为 9) 。
2、concat 命令:
以空格为分隔符将多个列表拼装在一起成为新的列表。 %set x {1 2} ;set y [concat $x 3]; => 1 2 3
它的作用等同于双引号:set y "$x 3"
3、lappend 命令:
用来将新元素追加到列表末尾。注意显示的时候会有空格 set a hel;lappend a lo; =>hel lo (由此可以看出, lappend 可以用于创建一 个列表)
5、string 命令:
(1) 、string compare、string equal 字符串比较
例 4-8string compare 和 string equal 进行字符串比较的例子 %set s1 abc =>abc %set s2 abd =>abd % if { [string compare $s1 $s2] == 0} { puts "s1 is same as s2" } else { puts "s1 isn’t same as s2" } => s1 isn’t same as s2 %if { [string equal $s1 $s2]} { puts "s1 is same as s2" } else { puts "s1 isn’t same as s2" } => s1 isn’t same as s2 (2)string match:匹配 string match alpha alpha;=>1;#匹配时输出 1 string match {[alpha]*} bfadsalpha ;=>0 ;#表示要匹配以 alpha 任何一个开头的 字符串 (3)string replace:字符串替换 (4)字符串映射:string map string map 命令根据字符映射对字符串进行转换。映射以输入、输出表的形 式表示。 凡是字符串中包含有输入序列的地方都使用相应的输出序列替换(列表 中输入后的字符) 。输入、输出要成对使用,如: string map {f p d l} "food" =>pool string map {f pp d ll oo a} "food" =>ppall
2、变量赋值与取消定义:
语法为:set vanName [value] unset varName set:变量定义和赋值命令,为变量赋值时,会为变量开辟一段内存空间来 存储变量值。 set 命令也可以只跟变量而无变量值,若变量已经定义,则返回变 量值,效果和 puts 类似,如果该变量不存在,则返回错误信息。当设置了一个 变量时,要读取它可以通过“$”符号来引用。 set a hello; #定义变量 a 并赋值 puts $a; #此时输出的就是 hello,有点类似指针的概念 set b $a; #把 hello 这个值赋给 b Unset:取消变量定义,并释放变量指定区段的列表元素,可以以 end 或者 end-n 作为索引(n 为正 整数) 。 lrange {1 2 3 {4 5} 6} 2 end ;=> 3 {4 5} 6
7、linsert 和 lreplace 命令:
linsert 命令用来将元素插入到一个列表由索引指定的位置。如果索引为 0 或者更小,则元素就会被添加到最前面。如果索引值大于或者等于列表长度, 则 元素被追加到列表尾部。其他情况元素被添加到指定位置之前。 lreplace 命令将一个指定区段的列所谓的替代,其实包含 3 层意思,一、变 量的替代。二、命令的替代。三、反斜杠替代。 变量的替代: set var 5;set b $ var; 在这里,使用$符号就是一个替代的例 子,它相当于替代 Var 变量的数值给$var。 命令的替代: set len [string length foobar],它的意思是把 foobar 的字符长度 给 len。嵌套命令由【】分隔,这是一种命令替代。 如果在一个命令中有多重命令替代,那么是按照从左到右的顺序处理,每遇 到右中括号就开始处理其分隔的命令。 反斜杠替代: 它用来引用对于解释器有特殊意义的字符。 此时 a 的值为$b。 比如 set a \ $b;
TCL 脚本语言学习 前言
Tcl 和 Java 一样,是平台无关的语言, windows 、linux 下面都可运行; Tcl 和 Perl 一样,是脚本语言,无须编译,解释执行;Quartus II 支持 Tcl;Modelsim 支持 Tcl,.do 文件就是按照 Tcl 语法写的;学会了 Tcl,Quartus II 的项目设置可 以随身带走,项目维护简便至极;学会了 Tcl,可以把 Quartus II 的 STA 工具用 起来,时序分析从此不难;学会了 Tcl,自己就能 EDA。
3、替换:
(1) 、用“$”可以引用替换功能,但是注意 TCL 对替换只进行一遍解释,对 嵌套的“$”不予理睬 例如: set a hello set b a set x $$b,此时输出为$a (2) 、[]也可以完成替换的命令 例如:set b [set a 5] 或 set b [expr 5*10]
列表操作命令 1、list 命令:
用来创建列表,一个列表可以包含子列表,即列表可以嵌套。 set l1 [list Sun Mon Tues] ; =>Sun Mon Tues #列表 l1 中含有 3 个元素 set l2 [list $l1 Wed] => {Sun Mon Tues} Wed ; #列表 l2 中含有两个元素。第一个元素用花括 号括起来。
语法
基本操作命令 1、输出:
语法为:puts ?-nonewline? ? channelled? String 例如:puts hello,如果是写成 puts -nonewline hello,就是表示不输出回车换行。 如果是 puts {"hello,world!"} ,此时输出的结果是“hello,world!” 注意:puts stdout {"hello,world!"},与上面的输出是一样的,这里 stdout 是表示 标准输出 I/O 流,它同 stderr(用于标识标准出错输出) ,stdin(标准输入)一样, 是和其他文件的 I/O 命令的约定。
字符串基本指令 1、append:
将值追加到字符串尾, 将一段字符串连接到另一字符串尾部从而组成新的字 符串。 语法: append varName ?value? 例 如: set var1 hello; set var2 world; append var1 $var2; # 此 时输 出的 就 是 helloworld,也就是 var1 的值现在变成 helloworld。
4、“\”的作用:用于引用特殊字符或特殊功能。
例如:set x "\$a";#把 X 定义为$a puts "\a" ;#输出震铃(在 tclsh 下运行) puts "\nhello" ;#\n 表示换行显示 hello 所谓的替代,其实包含 3 层意思,一、变量的替代。二、命令的替代。三、 反斜杠替代。 set var 5; set b $ var; 变量的替代: 在这里, 使用$符号就是一个替代的例子, 它相当于替代 Var 变量的数值给$var。 命令的替代: set len [string length foobar],它的意思是把 foobar 的字符长度 给 len。嵌套命令由[]分隔,这是一种命令替代。 如果在一个命令中有多重命令替代,那么是按照从左到右的顺序处理,每遇 到右中括号就开始处理其分隔的命令。 反斜杠替代:它用来引用对于解释器有特殊意义的字符。比如 set a \ $b; 此 时 a 的值为$b。 反斜杠还有一个作用就是在多行之间延续长命令, 因为换行符会结束一个命 令。
3、scan:
根据格式描述符来解析一个字符串并将对应值赋给后面的变量。 返回值是成 功转换的个数。 语法:scan string format var?var?..... %c 的作用与 format 的正好相反, 是将一个 ASCII 字符转换为对应的整数值。 与 format 的区别: format 是将多个目标变量转换成一个字符串, scan 是将一 个字符串分解为多个变量。 例如:set num [scan "abcABC" "%c%c " var1 var2] ;puts "$var1 $var2"; 输出:=> 97 98 注意:这里其实只是对 a、b 进行了转换,后面的 cABC 没有转换,要想转 换,只要多写几个%c,后面多定义几个变量就可以了。并且%c 的个数与变量的 个数要一一对应。
2、format:
根据一组格式说明来格式化字符串,此命令不会改变被操作字符串的内容。 语法:format spec value1 value2... 其中,spec 包含了格式说明关键词和附加文字,使用%来引入一个关键词, 后跟 0 个或多个修饰符,然后使用一个转换格式符结尾。 关键词的基本格式是:“%aaaB" ,aaa 表示修饰符,B 表示一种格式转换符。 valueX 是变元,其关键词可以多达 6 部分:位置说明符、标志、字段宽度、 精度、长度、转换符。 例如:format ”%8x“20 ;#将 20 转换为十六进制数,8 位数据宽度,右对齐。 如果是-8x 表示左对齐。