安装
# 安装apt包管理器(若有可跳过)
sudo apt-get update
# 安装最新版本的 tcl
sudo apt-get install tcl
# 安装完成后,验证是否安装成功
tclsh
#若安装成功,终端中会出现“%”提示符,进入Tcl的命令行模式
基础语法
- 一个 TCL 脚本可以包含一个或多个命令。命令之间必须用换行符或分号 ; 隔开。
- TCL 每一命令包含一个或几个单词,第一个单词代表命令名,另外的单词则是这个命令的参数,单词之间必须用空格或 TAB 键隔开。
- 注释:使用 # 注释。
置换
TCL 解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换。TCL置换分为以下三类。
-
变量置换
$
TCL 解释器会将认为 $ 后面为变量名,将变量置换成它的值。
-
命令置换
[]
[] 内是一个独立的 TCL 语句, expr 表示求值。
-
反斜杠置换
\
类似于 C 语言中反斜杠的用法。换行符、空格、[、$ 等被 TCL 解释器当作特殊符号对待的字符,加上反斜杠后变成普通字符,\t 代表 TAB,\n代表换行符。
-
双引号和花括号
""
:TCL 解释器对双引号中 $ 和 [] 符号会进行变量置换和命令置换。
{}
:在花括号中,所有特殊字符都将成为普通字符,TCL 解释器不会对其作特殊处理。
source 和 eval 命令
-
eval
语法格式:eval arg arg ...
功能:该命令是一个用来构造和执行 TCL 脚本的命令。接收一个或多个参数,然后把所有的参数以空格隔开组合到一起成为一个脚本,然后对这个脚本进行求值。 -
source
语法格式:source e:/tcl/hello.c
(例子)
功能:读一个文件并把这个文件的内容作为一个脚本进行求值。
变量、数组、列表
-
变量
变量的名称在程序运行期间保持不变,但是变量的值通常会不断改变。定义:
set 变量名 变量值
取值:$变量名
unset
:该命令从解释器中删除变量,它后面可以有任意多个参数,每个参数是一个变量名,可以是简单变量,也可以数组或数组元素。incr
:该命令把一个变量值加上一个整数。incr 要求变量原来的值和新加的值都必须是整数。 -
数组
TCL 中数组可以存储很多值,通过元素名来进行检索。类似于某件事物(数组名)几种不同属性(元素名),每一种属性有其独立的值。且不能单独声明一个数组,数组只能和数组元素一起声明。定义:
set 数组名(元素名) 值
取值:$数组名(元素名)
使用 array 指令可以获取数组信息。
-
列表
列表是标量的有序集合。定义:
set 列表名 {元素1 元素2 元素3 ...}
取值:$列表名
列表的操作命令 功能 concat 合并两个列表 lindex 选取列表中的某个元素(从0开始计数) llength 列表长度 lappend 在列表末端追加元素 lsort 列表排序(缺省时按照ASCⅡ码进行排序;-real:按照浮点数值大小排序;-unique:唯一化,删除重复元素)
控制流
-
if
if {判断条件} { 脚本语句 } elseif {判断条件} { 脚本语句 } else { 脚本语句 }
注意:
① 脚本语句的 ‘{’ 一定要写在上一行,因为如果不这样,TCL 解释器会认为 if 命令在换行符处已结束,下一行会被当成新的命令,从而导致错误。
② 同时 if 和 { 之间应该有空格否则 TCL 解释器会把 if{ 作为一个整体命令导致出错。 -
foreach
语法格式:foreach 变量 列表 循环主体
-
break
功能:结束整个循环过程,并从循环中跳出
-
continue
功能:仅结束本次循环
-
while
语法格式:while 判断语句 循环主体
-
for
语法格式:for 参数初始化 判断语句 重新初始化参数 循环主体
过程函数 proc
语法格式:proc 过程名称 参数列表 过程主体
功能:类似于 C 语言中的函数。即用户自定义的功能,方便多次调用。
全局变量:在所有过程之外定义的变量。
局部变量:对于在过程中定义的变量,因为它们只能在过程中被访问,并且当过程退出时会被自动删除。
指令 global:可以在过程内部引用全部变量。
文件访问
-
open
语法格式:open 文件名 打开方式
(r:读模式;w:写模式;…)
功能:打开文件。 -
gets
语法格式:gets fileId 变量名
功能:gets 读 fileId 标识的文件的下一行,并把该行赋值给变量,并返回该行的字符数(文件尾返回 -1) -
puts
语法格式:puts -nonewline fileId string
功能:puts 把 string 写到 fileId 标识的文件中,如果没有 nonewline 的话,添加换行符。fileId 默认是 stdout。 -
close
语法格式:close fileId
功能:关闭文件
评论区