tcl快速入门


TCL是一种很通用的脚本语言,功能强大。最早称为“工具命令语言””Tool Command Language”,但是目前已经不是这个含义,不过我们仍然称呼它TCL,发音为”tickle”。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。

置换

TCL语言使用$ [] \来实现置换功能
$: 解释器会把$后面的认为是变量名,将变量置换成他的值,例:

set a "zhr"; 
#赋值给a
puts $a;
#打印结果为zhr
puts a;
#打印结果为a

[ ]:[ ]内是一个独立的TCL语句,例:

set a [expr 3 + 4];
puts $a;
#打印结果是7

\: 加上\会变成普通字符,例:

puts "[expr 3 + 4]";
#结果是7,expr是将运算表达式求值
puts "\[[expr 3 + 4]]";
#输出结果是[expr 3 + 4]

其他字符: { }相当于\ 的功能 #起到注释的作用,此处就不举例说明了

变量数组列表

变量定义 set 变量名 变量值,取值 puts $变量名,例:
set a "i love you"
puts $a

数组定义 set 数组名(元素名)值,取值 puts $数组名(元素名),例:

set cell(name) "zhr";
puts $cell(name);

可以使用array获取数组信息,例:
array size cell或者array name cell

列表定义 set 列表名 {元素1 元素2},取值 puts $列表名,例:

set list {list1 list2 list3};
puts $list;

本人觉得列表和变量的使用方法相同

列表指令

contact: 合并两列表,例:

contact $list1 $list2

llength: 返回元素个数,例:

llength $list1

lindex: 返回列表第n个元素,例:

lindex $list1 1

lappend: 末尾加入新元素,例:

lappend list1 1

lsort: 排序,后面可加参数 -real 按浮点数大小排 -unique 删除重复,例:

lsort (real) $list1

控制流

if语句:和c语言中的if语句功能十分相似,例

if { 表达式 } {

            #运算;

        } else {

             #其他运算;

        }

foreach语句:把列表里第0个元素开始,依次把值赋给变量,例:

foreach i $list{  # 把list里的元素依次给i
puts $i
}

break语句

continue语句

while语句

for语句结构:for{initialization} {condition} {increment} {body},例:

for {set i 0} {$i< 10} {incr i} {puts $i;}  
#将打印出0到9`

过程函数

正则匹配

正则表达式是按照字符匹配规则提取出自己需要的字符内容,字符匹配规则如下:
正则表达式的\w,是匹配一个字母、数字或下划线,
正则表达式的\d,是匹配数字,
正则表达式的\s,用来匹配空格,
正则表达式的.,用来匹配任一字符,
正则表达式的*用来进行零次或多次匹配,+用来一次或多次匹配,?用来零次或一次匹配,
正则表达式的^用来表示字符串开头,$表示字符串结尾。

我们使用正则匹配指令regexp来进行正则匹配。例:

regexp {\s(\d+).*} "snow is 30 years old" total age 
puts $total
#输出30 years old
puts $age
#输出30

文本处理

文本处理在日常生活中十分常用,tcl脚本中用于文本处理的一般是open,gets,close;例:

set f01 [open "fix.tcl" w];# 命令表示 打开或者新建一个文件“fix.tcl”,并将其 file ID 设置为 f01,后续就以这个 file ID 来操作这个文件;

puts  $f01 "size_cell $cel_name $ref_name" ;#这条命令表示将这个字符串写入文件 fix.tcl,并自动追加换行符;

close $f01 ;#对文件操作完成后,需要将其关闭

文章作者: zhr
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zhr !
  目录