1. 准备工作
1. 1 修改work路径,并执行对应的tcl文件。我们正常应该是在文本编辑器中(notepad++),编辑TCL脚本,再用tclsh运行。
cd c:/GAOP/tcltk/
dir
source 001.tcl
2. 基本语法
2.1 字符替换的规则
a) 解析器 解析一条tcl命令时,解析器是从左往右解析1次,进行1轮替换,每个字符只会被扫描一次。
b)每个字符只会发生1层替换,不会对替换后的结果再进行1轮替换。
2.2 符号
$ | 变量置换;$符号后的内容会解析为变量,$a 表示取a的值 |
[] | 命令置换; []内是一个独立的TCL语句 |
\ | 反斜杠置换;换行符、空格、[、$等被TCL解释器当作特殊符号对待的字符, 加上反斜杠后变成普通字符。用\t表示TAB。 用\n表示换行符 |
"" | TCL解释器对双引号中$和[]符号会进行变量置换和命令置换。不会操作空格等。 |
{} | 所有特殊字符都将成为普通字符 |
变量 | 定义:set 变量名 变量值 取值:$变量名 |
数组 | 定义:set 数组名(元素名) 值 取值:$数组名(元素名) |
列表 | 定义 set 列表名 {元素1 元素2 元素3……} 取值 $列表名 索引从0开始不是从1开始 |
数学运算 | +-*/ |
逻辑运算 | <= == >= != |
条件判断 | if {判断条件} { 脚本语句 } elseif {判断条件} { 脚本语句 } else { 脚本语句 } 上例中脚本语句的'{'一定要写在上一行,因为如果不这样,TCL 解释 器会认为if命令在换行符处已结束,下一行会被当成新的命令,从而导致错误 |
2.3 选择操作符
expr {(1>2) ? 1:2}
注意其中的(),没明白什么时候可以使用()
2.4 进制表示数值
set bin_var 0b0101
set oct_var 0o07
set oct_var 07
set dec_var 7
set hex_var 0x0A0开头的数字为了兼容老版本,会解析为8进制。
2.5 预定义的变量
puts "$argv0 " 存放脚本文件的文件名
puts "$argv " 参数的列表形式存储
puts "$argc "参数的个数puts "$env(HOME) "当前目录
puts "$tcl_platform(platform) "
puts "$tcl_platform(os) "
puts "$tcl_platform(machine) "
2.6 比较两个字符串
if {"aaa" eq "aaa"} {
puts "eq"
}字符串严格比较,要完全相等,不能多不能少
3. 参考网站
PPT
https://customizablecomputinglab.gitee.io/2020/08/07/class-STA/
视频教程
https://www.bilibili.com/video/BV1if4y1p7Dq?p=2&spm_id_from=pageDriver
https://xueying.blog.csdn.net/article/details/103788604
https://www.yiibai.com/tcl/tcl_procedures.html