TCL是一种解释性语言,其工作流程主要分为两个阶段:分析和执行。在分析阶段解释器将TCL语句运用规则划分为独立的单词,同时对其中某些字符或者内容进行必要的替代;在执行阶段,解释器将第一个单词作为命令名,查看是否会有定义,然后将其对应为相应的C/C++过程。并把所有单词作为参数传递给该命令过程,让命令过程进行处理。
这个TCL的替代主要分为三种:变量替换,命令替换和反斜杠替换。
> 变量替换
变量替换是为了将单词中的某些字母看做变量然后用其值进行替换,例如:
set x 1
set y $x+100
上面两个语句给y赋的值为1+100(不是结果101)在这里就是一个变量的替代导致的结果,如果没有$那么y的值则为x+100(看做了一段字符串)
> 命令替换
将后面的单词用 [ ] 括起来,[ ]中的东西是完整的TCL语句,可以有多条,不限数量,两条语句之间用‘;’隔开,这 [ ] 中的语句返回值为最后一条的返回值,例如:
set y [expr $x+100; set a 300]
这里赋给y的值为300,尽管前面的expr语句的值为101。如果没有后面的赋值语句y就可以成功赋值101了
> 反斜杠替换
这个就和c语言中转义字符是一个意思,但是要注意的是在不同的括号中这些转义字符表示的意义也是不一样的。比如
在 [ ] 中这些反斜杠的特殊字符都会解释为相应的转义字符,如果不带上\就会解释为普通字符。
在 { } 中所有的特殊字符都会看成普通字符不管有没有反斜杠
在“”中各种分隔符将不做处理,但是对换行符、$和 [ ] 不会当成普通字符处理
TCL的注释是一行一行写的行首必须有一个#号