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 ;#对文件操作完成后,需要将其关闭