排列列表。
-dictionary 与acsii类似,只是不区分大小写
-integer 转化为整数再比较
-real 转化为浮点数再比较
-command command 执行command来做比较
open fileName
open fileName access
|
打开文件,返回一个文件描述符。
定义与C中相同。如文件名的第一个字符为|表示一管道的形式来打开。
set f [open |more w]
set f [open /etc/pass r]
proc name args body
|
创建一个新的过程,可以替代任何存在的过程或命令。
proc wf {file str} {
puts -nonewline $file str
flush $file
}
set f [open /tmp/a w]
wf $f "first line "
wf $f "second line "
|
在函数末尾可用 return 来返回值。
puts -nonewline fileId string
|
向fileId中写入string,如果不加上 -nonewline 则自动产生一个换行符。
返回当前目录。
read fileId
read fileId numBytes
|
从fileId中读取numBytes个字节。
regexp ?switches? exp string ?matchVar? ?subMatchVar
subMatchVar ...?
|
执行正则表达式的匹配。
?switches? -nocase 不区分大小写
-indices 返回匹配区间
|
如:
regexp ^abc abcjsdfh
//return 1
regexp ^abc abcjsdfh a
//return 1
puts $a
//return abc
regexp -indices ^abc abcsdfjkhsdf a
//return 1
puts $a
//return "0 2"
|
regsub ?switchs? exp string subSpec varName
|
执行正则表达式的替换,用subSpec的内容替换string中匹配exp的部分。
?switchs? -all 将所有匹配的部分替换,缺省子替换第一个,返回值为替换的个数。
-nocase 不区分大小写。
如:
regsub abc abcabcbac eee b
//return 1
puts $b
//return "eeeabcabc"
regsub -all abc abcabcabc eee b
//return 3
puts $b
//return "eeeeeeeee"
return
立即从当前命令中返回。
proc ff {} {
return friday
}
set a [ff]
//a = "friday"
|
scan string `format" varname ...
|
从string中安format来读取值到varname。
seek fileId offset ?origin?
|
移动文件指针。
origin: start current end
|
offset从哪里开始算起。
设置varname用value,或返回varname的值。如果不是在一个proc命令中则生成一个全局变量。
从filename中读出内容传给Tcl解释起来执行。
split string ?splitChars?
|
将string分裂成列表。缺省以空白为分隔符,也可通过splitChars来设定分隔符
用于字符串的命令。
string compare string1 string2
|
执行字符串的比较,按 C strcmp 的方式。返回 -1, 0, or 1。
string first string1 string2
|
在string1种查找string2的定义次出现的位置。未找到返回-1。
返回字符串string的长度。
string match pattern string
|
判断string是否能匹配pattern。pattern是以shell文件名的统配格式来给出。
string range string first last
|
返回字符串string中从first到last之间的内容。
将string转换为小写。
将string转换为大写。
将string的左右空白去掉。
将string的左空白去掉。
将string的右空白去掉。
返回fileId的文件指针位置。
执行命令,并计算所消耗的时间。
time "ls --color"
some file name
503 microseconds per iteration
trace subcommand
trace subcommand arg ...
|
监视变量的存储。子命令定义了不少,但目前只实现了
virable。
trace variable name ops command
name 为变量的名字。
ops 为要监视的操作。
r 读
w 写
u unset
|
command 条件满足时执行的命令。
以三个参数来执行 name1 name2 ops name1时变量的名字。当name1为矢量时,name2为下标,ops为执行的操作。
例如:
proc ff {name1 name2 op} {
puts [format "%s %s %s" name1 name2 op]
}
set a hhh
trace variable a r {ff}
puts $a
//return "a r hhh"
unknown cmdName
|
unknown 并不是 Tcl 的一部分,当 Tcl 发现一条不认识的命令时会看看是否存在 unknown命令,如果有,则调用它,没有则出错。
如:
#!/usr/bin/tclsh
proc unknown {cwd args} {
puts $cwd
puts $args
}
//下面是一条错误命令
sdfdf sdf sdkhf sdjkfhkasdf jksdhfk
//return "sdfdf sdf sdkhf sdjkfhkasdf jksdhfk"
|
删除一个或多个变量(标量或矢量)。
将起参数连接起来(象是在concat中)。最后在由level所指定的上下文中来执行。如果level是一个整数,给出了在栈中的距离(是跳到其它的命令环境中来执行)。缺省为1(即上一层)。
如:
#!/usr/bin/tcl
proc ff {} {
set a "ff" //设置了局部的a
-------------------------
}
set a "global"
ff
puts $a
//return "global"
|
再看下一个:
#!/usr/bin/tcl
proc ff {} {
uplevel set a "ff" //改变上一级栈中的a
-------------------------------------
}
set a global
ff
puts $a
//return "ff"
|
如果level是以#开头后接一个整数,则level指出了在栈中的绝对位置。如#0表示了顶层(top-level)。
a b c 分别为三个命令,下面是它们之间的调用关系,
top-level -> a -> b -> c -> uplevel level
|
绝对位置: 0 1 2 3
当level为 1 或 #2 都是在 b 的环境中来执行。
3 或 #0 都是在 top-level 的环境中来执行。
upvar ?level? otherVar myVar ?otherVar myVar ...?
|
在不同的栈中为变量建立连接。这里的level与uplevel中的level是同样风格的。
例如:
#!/usr/bin/tcl
proc ff {name } {
upvar $name x
set x "ff"
}
set a "global"
ff a
puts $a
//return "ff"
while test body
|
举个例子吧:
set x 0
while {$x<10} {
puts "x is $x"
incr x
}
|
Built-in variables 内建的变量下名的全局变量是由 Tcl library 自动来管理的。一般是只读的。
环境变量数组。
如:
puts $env(PATH)
// return /bin:/usr/bin:/usr/X11R6/bin
errorCode
|
当错误发生时保存了一些错误信息。用下列格式来存储:
CHILDKILLED pid sigName msg
|
当由于一个信号而被终止时的信息。
当一个子程序以非0值退出时的格式。
CHILDSUSP pid sigName msg
|
当一个子程序由于一个信号而被终止时的格式。
错误没有附加信息。
当一个内核调用发生错误时使用的格式。
包含了一行或多行的信息,描述了错误发生处的程序和信息。