目录
1 参数展开
#我们在当前目录下创建6个以.o结尾的文件夹。
file mkdir a.o b.o c.o d.o e.o f.o
#无效删除操作
file delete [glob *.o] ;#glob返回的是符合*.o形式的文件名列表,该列表作为一个单词传递给file delete
file delete {*} [glob *.o] ;#{*}后面多了空格符
#有效删除操作
file delete a.o b.o c.o d.o e.o f.o
file delete {*}[glob *.o] ;#和上一条命令等价,将glob返回的单词用分隔符隔开
eval file delete [glob *.o] ;#eval的过程是,将单词连接,单词之间用空格隔开,然后把该结果作为Tcl脚本处理
2 Tcl注释
#Tcl的注释符号为 #,有效注释位置包括两种情况
#第一种,命令的第一个字符
#valid comment
#第二种,命令用分号结束后,再用#开头的字符
puts "Hello Tcl!" ;#valid comment
puts "Hello Tcl!" #invalid comment
#会报出如下错误:
wrong # args: should be "puts ?-nonewline? ?channelId? string"
#如果注释语句中出现反斜线+换行,则相当于对注释续行
#同样的,如果是反斜线+空格+换行,续行功能失效,第二行相当于一条命令,会报错invalid command name "this"
set a 100
puts $a
#multi-line comment \
this is also valid comment
puts $a
3 返回异常
#不同的命令产生错误的条件不同
set x y z
#错误如下:
wrong # args: should be "set varName ?newValue?"
puts [expr 2*(5+2)
#错误如下:
missing close-bracket
while executing
"puts ["
puts [expr 2*(5+2]
#错误如下:
unbalanced open paren
in expression "2*(5+2"
(parsing expression "2*(5+2")
invoked from within
"expr 2*(5+2"
invoked from within
"puts [expr 2*(5+2]"
4 疑惑
看到网上说Tcl内建的全局变量errorInfo十分有用,可用puts $errorInfo输出这个变量的值。
但是我运行后报错,不知所以然。
puts $errorInfo
#错误如下
can't read "errorInfo": no such variable
while executing
"puts $errorInfo"
到这,Tcl脚本的语法就学的差不多了!加油!