一、置换符号
1.变量置换 $
TCl解释器会将认为$后面为变量名,将变量名置换成它的值
2.命令置换 []
[]内是一个独立的TCL语句
3.反斜杠置换 \
换行符、空格、[、$等被TCL解释器当作特殊符号处理。加上反斜杠后变成普通字符
\t TAB
\n 换行符
4.双引号 “”
“”中$和[]符号会进行变量替换和命令替换
5.花括号 {}
{}所以特殊字符都将变成普通字符,即TCL解释器不会对其做任何特殊处理
注:“” 和 {} 都是引用字符串的符号,区别就是“”内要做处理,{}内不做处理。
6.井号 #
表示注释#
二、变量、数组和列表
1.变量
(1)定义:
set 变量名 变量值
(2)取值:
$变量名
2.数组
(1)定义:
set 数组名 (元素名) 值
(2)取值:
$数组名(元素名)
(3)array指令:
3.列表
列表是标量的有序集合
(1)定义:
set 列表名 {元素1 元素2 元素3}
(2)取值:
$列表名
(3)操作命令
concat 合并两个列表
lindex 选取列表某个元素 (从0开始计数)
llength 列表长度
lappend 在列表末尾追加元素
注意:
lsort 列表排序
语法格式:lsort 开关 列表
开关:缺省——默认ASCll码排序色图 -real——浮点数大小 -unique——唯一化,删除重复元素
三、运算
1.数学运算
+ - * /
2.逻辑运算
<= >= == !=
3.指令
expr 表达式
注意:若想进行浮点运算,需要将其中任意一个值写成浮点型
四、控制流
1.if
语法格式:
if {判断条件} {
脚本语句} elseif {判断条件} {
脚本语句} else {判断语句} {
脚本语句}
2.循环指令_1-foreach
(1)语法格式:
foreach 变量 列表 循环主体
(2)功能:
从第零个元素开始,每次按照顺序取得列表的一个元素,将其赋值给变量,然后执行主体一次,直到列表最后一个元素
3.循环控制指令-break
功能:结束循环
4.循环控制指令-continue
功能:仅结束本次循环
5.循环指令_2-while
(1)语法格式
while 判断语句 循环主体
(2)功能
如果判断语句成立,就运行脚本,直到不满足判断条件停止循环,此时while命令终中断并返回一个空字符串
6.循环指令_3-for
(1)语法格式
for 参数初始化 判断语句 重新初始化参数 循环主体
(2)功能
五、过程函数-proc
1.语法格式:
proc 函数名 参数列表 函数主体
2.功能:
类似C语言中的函数。即用户自定义的功能,方便多次调用
3.全局变量和局部变量:
全局变量:在所有过程(proc)之外定义的变量
局部变量:对于在过程中(proc)中定义的变量,因为他们只能在过程中被访问,且在过程退出时会被自动删除
指令global:可以在过程内部引用所有的变量
六、正则匹配
1.定义:
正则表达式是指一种特殊的字符串模式,用来去匹配符合规则的字符串
正则表达式的\w,用来匹配一个字母、数字、下划线
正则表达式的\d,用来匹配一个数字
2.量词符号
* 零次或者多次匹配
+ 一次或者多次匹配
? 零次或者一次匹配
eg. abc123 --- \w+\d 或者 \w*\d*
3.锚位符号
^ 字符串开头
$ 字符串结尾
eg.123abcdef --- ^\d\d\d (取开头三个数字)
4.其它
\s 空格
. 表示任意一个字符串(w或者d)
5.-regexp
语法格式: regexp? switches? exp string? matchVar? ?subMatchVar subMatchVar ...?
功能:在字符串中使用正则表达式匹配
switches:-nocase将字符串中的大写都当成小写看待
exp正则表式:
string 用来进行匹配的字符串
matchstring表示用正则表示式匹配的所有字符串
sub1表示正则表达式中的第一个子表达式匹配的字符串
sub2表示正则表达式中的第二个子表达式匹配的字符串
七、文本处理
1.open
语法格式: open文件打开方式(打开方式r表示读模式,w表示写模式。)
功能:打开文件
2.gets
语法格式: gets fileId 变量名
功能: gets读fileld标识的文件的下一行,并把该行赋给变量,并返
回该行的字符数(文件尾返回-1)
3.close
语法格式: close fileid
功能: 关闭文件