作为学习笔记,写下来仅供自己查阅。
tcl脚本命令风格有些类似linux命令,比较古老和原始的语言,学过linux的看起来应该毫无压力
if 命令
if {$x < 0} {
set x 0
}
if {$x < 0} {
...
} elseif {$x == 0} {
...
} elseif {$x == 1} {
...
} else {
...
}
每一个左大括号都必须在它的前一个单词的同一行,因为换行符就是命令分隔符。下面这段脚本就会被解析为两个命令,报告if命令因参数不足而报错:
if {$x < 0}
{
...
}
switch 命令:
switch $x {
a {incr t1}
b {incr t2}
c {incr t3}
default {incr t4}
}
while 命令:
倒转列表元素书序程序如下:
set b {}
set i {expr {[llength $a] - 1}}
while {$i > 0} {
lappend b {lindex $a $i}
incr i -1
}
用 for循环 实现如下:
set b {}
for {set i {expr {[llength $a] - 1}}} {$i >= 0} {incr i -1} {
lappend b [lindex $a $i]
}
用 foreach命令 实现:
set b {}
foreach i $a {
set b [linsert $b 0 $i]
}
foreach 命令也接受变量名列表:
foreach {x y} {a b c d e} {
puts "<$x>,<$y>"
}
=><a><b>
<c><d>
<e><>
foreach 还可以并行处理多个列表:
foreach i {a b} {j k} {v w x y z} {
puts "i:<$i>,j:<$j>,k:<$k>"
}
=>i:<a>,j:<v>,k:<w>
i:<b>,j:<x>,k:<y>
i:<>,j:<z>,k:<>
循环控制: break 与 continue
这两个命令与c语言中对应的语句相同,都不需要任何参数。
eval 命令:
用于创建和运行tcl脚本的通用构造块。它接受任一多个参数,把它们用分隔符串接起来,然后把串接的结果作为一个tcl脚本处理。
set reset {
set a 0
set b 0
set c 0
}
...
eval $reset
又如:
set vars {a b c d}
eval unset $vars
串接 unset $vars 参数后结果为
unset {a b c d}
然后把以上语句作为一个tcl脚本执行,结果清除a b c d四个变量。
source 命令:
读取一个文件,将其内容作为tcl脚本运行。
一个参数,该参数指定要读取的文件名。例如:
source init.tcl
改命令运行init.tcl文件的内容。可以用绝对路径或相对路径。
source 的返回值就是文件内容的返回值,即文件中最后一个命令的返回值。
另外source允许在文件内的脚本中使用return命令终止过程。
使用source命令,可以将一个大的脚本分为小的模块,又一个主脚本用source调用其他的脚本模块。
可以通过把过程定义放到一个文件中,把可重用的过程建立成库。