TCL LEARN NOTE
BASIC
-
命令格式
- tcl命令类似于bash,单行单个命令结尾不需要加分号
- tcl单行多个命令,用分号区分
- perl script,命令结尾需要加分号
-
变量置换
set x 10 set y $x+20
-
命令置换
命令置换是由[]及其参数组成的
命令置换的结果是[]及其参数最后一个命令的返回值
set x 10 set y [expr $x+10] set y [expr $x+100;set b 300] //y的值为300
-
反斜杠置换
转义作用
-
双引号花括号
- 花括号中的所有字符都将失去特殊意义,原样输出
- 双引号仅会对$/[]/换行符进行处理
-
注释
- tcl使用#注释,必须是在行首
#set var name set name lina #set comment (wrong) set name lina; #set comment (right)
-
变量
变量置换时,将$后第一个不是数字/字母/下划线的字符作为字符段结尾
set a 5 set a.1 6 set b a.1 #result: b=5.1 set b ${a.1} #result: b=6
-
数组
- tcl不支持复杂变量
- 数组和数组元素要一起声明
set arrays(value1) 1 set arrays(value2) 2 set c $arrays(value1) #result c=1
-
操作数
- 八进制数:011对应十进制数9
- 十六进制数:0x11对应十进制数17
-
函数
- 绝对值:abs()
- 反余弦:acos()
- 反正弦:asin()
COMMAND
-
set
-
unset
-
append
追加一段文本
set str hello append str "lina" #result: hello lina
-
incr
原来整数数值基础上加上一个数
set b 5 incr b 3 #result: b=8
-
list
- list是一组元素的有序集合
- 元素可以是字符也可以是一个list
list 12 25 {6 0}
-
lindex
list索引
- lindex {list} index
list 2 8 {4 6} lindex {2 8 {4 6}} 2 #result: 4 6
-
llength
llength {list},返回list长度
llength {2 8 {4 6}} #result: 3
-
linsert
linsert {list} index list2
在索引值前插入list2形成一个新的list
list 1 2 3 linsert {1 2 3} 2 5 9 10 #result: 1 2 5 9 10 3
-
lreplace
lreplace {list} first last list2
first到last索引值元素被list2替换
list 1 3 5 7 9 lreplace {1 3 5 7 9} 1 2 2 4 6 8 #result: 1 2 4 6 8 7 9
-
lrange
lrange {list} first last
返回first到last索引值之间的元素
如果last为end就会返回从first到end之间的值
lrange {1 3 5 7 9} 2 3 #result: 5 7
-
lappend
每个value值作为一个元素附加到变量varname后面
set a 7 lappend a 1 2 3 #result:a= 7 1 2 3
-
lsearch
-
lsort
-
split
分隔命令
-
join
合并命令
控制语句
-
if语句
{一定要写在上一行
if和{之间有空格分隔
if {condition1} { }elseif { } else { }
-
while语句
while {condition1} { }
-
for语句
for {op1} {op2} {op3} { }
-
foreach语句
foreach {list} { }
-
break and continue
- break跳出整个循环
- continue结束本次循环
-
switch
switch $var { condition1 op1 condition2 op2 default op3 }
-
eval
-
source