Tcl基础入门
TCL(Tool Command Language)是一种解释执行的脚本语言(Scripting Language)。它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。
1 基础语法
一个TCL脚本可以包含一个或多个命令。命令之间必须用换行符或分号隔开。TCL的每一个命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或TAB键隔开。command <varName> [<value>]
set a 1
set b 2
#或者
set a 1; set b 2
2 置换(substitution)
TCL解释器在分析命令的时候,把所有的命令参数都当作字符串看待
#定义变量x,并把x的值赋值为10
set x 10; #10
#y的值是x+10,不是我们期望的110
set y x+100; #x+100
x被看作字符串“x+100”的一部分,想要实现期望的“110”需要使用TCL语言中提供的置换功能:变量置换、命令置换、反斜杠置换。
2.1 变量置换
变量置换用$
符号标记,变量置换会将变量的值插入一个单词中。
#y的值是10+100,这里x被置换成它的值10
set y $x+100; #10+100
2.2 命令置换
命令置换使用[]
括起来的TCL命令及其参数,命令置换将某一个命令的所有或部分单词被另一个命令的结果所替代。
#y的值是110,达到我们的期望
set y [expr $x+100]; #110
y的值是110,这里当TCL解释器遇到字符[
时,它就会把随后的expr
作为一个命令名,从而激活与expr
对应的C/C++过程,并把expr
和变量置换后得到的10+110
传递给该命令过程进行处理。
如果在上例中我们去掉[]
,那么TCL会报错。因为在正常情况下,TCL解释器只把命令行中的第一个单词作为看作命令,其他的单词都作为普通字符串处理,看作是命令的参数。
2.3 反斜杠置换
类似于C语言中反斜杠\
的用法,主要用于在单词符号中插入被TCL解释器当作特殊符号(换行符、空格、[、$等)对待的字符。
#msg的值为 multiple space
set msg multiple\ space; #multiple space
#不使用反斜杠会导致解释器将空格当作分隔符,认为set命令多于两个参数,从而报错。
反斜杠置换还有:
除了使用反斜杠外,TCL提供另外两种方法来使得解释器把分隔符和置换符等特殊字符当作普通字符,而不作特殊处理,这就要使用双引号""
和花括号{}
。
TCL解释器对双引号中的各种分隔符将不作处理,但是对**换行符及$
和[]
**两种置换符会照常处理。
set x 100
set y "$x ddd"; #100 ddd
3 变量
TCL提供两种变量:简单变量和数组
3.1 简单变量
一个TCL的简单变量包含两个部分: