Tcl-脚本语言基础
介绍
Tcl, Tool Command Language, 是一种简单的脚本语言, 常集成到其他应用.
安装
在 Archlinux 上, 安装为:
1 |
|
(Tk 是基于 Tcl 的一个用于构建图形界面的工具包, 使得用户可以通过简单的 Tcl 脚本创建窗口应用程序)
测试, 在 hello.tcl
文件中写入:
1 |
|
之后:
1 |
|
tclsh
则是 Tcl 的解释器, 一般 Tcl 程序都用 .tcl
的扩展名.
另一个解释器是 wish
(Windowing SHell, 怎么用的暂时不谈吧).
语法
Tcl 脚本主要由 commands 构成, 这些 commands 一部分来自 Tcl interpreter (builtin commands), 另一部分则来自于 extension 机制 (Tcl 提供 APIs, 其他语言来实现, 比如 C/C++), 还有一部分来自 proc
命令的构建.
可以在 tclsh
里交互查看结果:
1 |
|
expr
command 用于进行数学运算.
任何 Tcl command 都会返回结果, 有些 result 用处不大则是返回的空字符串.
注释
以 #
为注释, 可以用 ;
来分隔 commands.
变量
用 set
command 来赋值以及取值, 赋值如:
1 |
|
取值如:
1 |
|
Tcl 中的变量没有类型, 每个变量都可以存储任意值.
使用变量则需要用 $
符号;
1 |
|
甚至可以用变量表示 command:
1 |
|
Command substitution
即把一个指令的结果作为另一个指令的输入:
1 |
|
双引号和花括号
在双引号中用 $
相当于是变量插值, 其中的 []
也会计算出结果, 比如:
1 |
|
若要避免变量插值以及 []
的计算, 可以用 {}
包裹:
1 |
|
控制语句
比如定义一个 procedure (也就是函数):
1 |
|
proc
command 接受三个参数- procedure 名
- 参数列表
- procedure 主体
while
表明循环result
指定返回值
此时可以调用如:
1 |
|
打印输出
用 puts
command, 其会默认追加换行符.
1 |
|
数学运算
expr
能处理所有标准的数学符号, 逻辑符号, 位运算以及一些数学函数如 rand()
, sqrt()
, cosh()
等.
一个技巧, 用 {}
包裹 expr
的参数计算速度更快:
1 |
|
字符串的比较用 eq
和 ne
, 数字用 ==
和 !=
, 可以用 in
和 ni
来判断是否在列表中.
expr
中也能结合 commands:
1 |
|
类型转换
用四个函数:
double()
int()
wide()
, 一个更大的 integerentier()
, 一个合适的 integer
进度
暂时看到 https://www.tcl.tk/man/tcl8.5/tutorial/Tcl7.html 了, 以后可补齐.