logo资料库

TCL脚本语言编程.pdf

第1页 / 共108页
第2页 / 共108页
第3页 / 共108页
第4页 / 共108页
第5页 / 共108页
第6页 / 共108页
第7页 / 共108页
第8页 / 共108页
资料共108页,剩余部分请下载后查看
总目录
例索引
表索引表 31 数学与逻辑运算符9表 32 数学函数9表 41 比较有用的字符串操作命令11表 4
图索引图 1 TclTour界面1图 2启动Tcl交互界面2图 3 交互界面2图 4 启动Windows丁
Tcl基本知识
什么是Tcl
Tcl自学工具
Tcl软件包
Tcl命令格式
Tcl脚本文件和source 命令
可执行脚本文件\(Executable File\)
获得帮助
Windows系统
Unix系统
输出、赋值与替换
puts
set & unset
替换
$
[]
" " 和{}
数学表达式与expr命令
数学和逻辑运算符
数学函数
数学运算举例
incr命令
字符串
基本命令集
append命令
format命令
format命令说明
format举例
scan命令
binary命令
subst命令
string 命令
string 命令列表
字符串比较
string match字符串匹配
字符串替换
字符类别\(class\)测试
字符串映射
Tcl列表操作
列表命令集
list命令
concat命令
lappend命令
llength 命令
lindex命令
lrange命令
linsert 和lreplace命令
lsearch命令
lsort命令
join与split命令
foreach控制结构
数组
数组的定义与格式
数组变量
多维数组
数组操作命令
array get命令
array names命令
遍历数组
用数组定义结构
控制结构命令
if/else命令
for命令
while命令
break 与 continue命令
switch命令
catch 命令
error命令
return 命令
exit命令
过程与作用域
proc—过程定义命令
作用域
过程的作用域
变量的作用域
upvar命令
rename命令
特殊变量
命令行参数
env--环境变量数组
eval命令
uplevel命令
正则表达式(Regular Expressions)
regexp命令
regsub命令
正则表达式的语法
分支\(branch\)和原子\(atom\)
基本语法
匹配字符
限定匹配
方括号表达式与字符集
匹配分支
量词(Qulifier)
子模式与匹配报告捕获
反斜杠引用
匹配优先级
高级正则表达式(AREs)
反斜杠换码\(escape\)序列
归整元素\(collating element\)
等价类\(equivalence class\)
字符类\(character class\)
非贪婪量词
约束量词
回退引用
前瞻\(lookahead\)
换行符敏感的匹配
嵌入式选项
扩展语法
语法小结
其它支持正则表达式的命令
名字空间
创建名字空间
用::限定符来使用变量和过程
名字空间的变量
过程的进口与出口
内省\(introspection\)
名字空间命令集
跟踪与调试
clock命令
clock clicks命令
clock seconds命令
clock format命令
clock scan命令
info 命令
info level
info exists
trace命令
trace variable
trace vdelete
trace vinfo
脚本库与软件包
声明和使用软件包
软件包定位
声明软件包命令
加载软件包命令
自动加载与软件包索引
用链接库提供软件包
package命令集
小结
文件操作与程序调用
文件操作
文件I/O
文件系统信息命令
glob命令
file命令集
程序调用
用open命令打开一个进程管道
用exec命令调用程序
pid命令
套接字与事件驱动编程简介
套接字编程
socket命令
Client端socket命令
Server端socket命令选项
用fconfigure配置套接字
C/S编程举例
事件驱动编程
after命令
fileevent命令
vwait命令
fconfigure命令
fconfigure语法
非阻塞I/O
缓冲
参考文献
Tcl 编程初步 编辑版本 : 1.5 日 期 :2004-3-2 著 者 :陈 涛 上海贝尔阿尔卡特有限公司
Tcl 编程初步 总目录 总目录............................................................................................................................................... I 例索引.............................................................................................................................................IV 表索引.............................................................................................................................................VI 图索引............................................................................................................................................VII 第 1 章. 2.3.1 2.3.2 2.3.3 2.3.4 TCL 基本知识................................................................................................................ 1 1.1 什么是 TCL ..............................................................................................................................1 TCL 自学工具...........................................................................................................................1 1.2 TCL 软件包 ..............................................................................................................................2 1.3 1.4 TCL 命令格式...........................................................................................................................2 1.5 TCL 脚本文件和 SOURCE 命令 ..................................................................................................3 1.6 可执行脚本文件(EXECUTABLE FILE)...........................................................................................3 1.7 获得帮助.................................................................................................................................4 1.7.1 Windows 系统.............................................................................................................4 1.7.2 Unix 系统......................................................................................................................4 第 2 章. 输出、赋值与替换 ........................................................................................................ 5 2.1 PUTS .........................................................................................................................................5 2.2 SET & UNSET ..............................................................................................................................5 2.3 替换 ........................................................................................................................................6 $...................................................................................................................................6 [] ..................................................................................................................................6 " " 和{} ..........................................................................................................................6 \...................................................................................................................................7 第 3 章. 数学表达式与 EXPR 命令 .............................................................................................. 8 3.1 数学和逻辑运算符..................................................................................................................8 3.2 数学函数.................................................................................................................................8 3.3 数学运算举例 .........................................................................................................................9 3.4 INCR 命令 ................................................................................................................................9 第 4 章. 字符串 ........................................................................................................................ 10 4.1 基本命令集 ...........................................................................................................................10 4.2 APPEND 命令..........................................................................................................................10 FORMAT 命令..........................................................................................................................10 4.3 format 命令说明...................................................................................................... 10 format 举例.............................................................................................................. 11 SCAN 命令 .............................................................................................................................12 BINARY 命令 ...........................................................................................................................13 SUBST 命令..............................................................................................................................14 STRING 命令 ...........................................................................................................................15 4.7.1 string 命令列表......................................................................................................... 15 4.7.2 字符串比较................................................................................................................ 16 4.7.3 string match 字符串匹配......................................................................................... 16 4.7.4 字符串替换................................................................................................................ 18 4.7.5 字符类别(class)测试................................................................................................. 18 4.7.6 字符串映射................................................................................................................ 19 4.3.1 4.3.2 4.4 4.5 4.6 4.7 i
第 5 章. Tcl 编程初步 TCL 列表操作.............................................................................................................. 20 5.1 列表命令集 ...........................................................................................................................20 LIST 命令.................................................................................................................................20 5.2 CONCAT 命令.........................................................................................................................21 5.3 5.4 LAPPEND 命令 ........................................................................................................................21 LLENGTH 命令 .........................................................................................................................22 5.5 LINDEX 命令............................................................................................................................22 5.6 5.7 LRANGE 命令..........................................................................................................................22 LINSERT 和 LREPLACE 命令........................................................................................................22 5.8 LSEARCH 命令.........................................................................................................................23 5.9 LSORT 命令 .............................................................................................................................24 5.10 5.11 JOIN 与 SPLIT 命令...................................................................................................................24 FOREACH 控制结构 ................................................................................................................27 5.12 第 6 章. 数组............................................................................................................................ 28 6.1 数组的定义与格式................................................................................................................28 6.2 数组变量...............................................................................................................................29 6.3 多维数组...............................................................................................................................29 6.4 数组操作命令 .......................................................................................................................30 array get 命令......................................................................................................... 30 6.4.1 6.4.2 array names 命令.................................................................................................... 30 6.4.3 遍历数组................................................................................................................... 31 6.4.4 用数组定义结构........................................................................................................ 31 第 7 章. 控制结构命令 ............................................................................................................. 32 IF/ELSE 命令............................................................................................................................32 FOR 命令................................................................................................................................33 WHILE 命令 .............................................................................................................................33 BREAK 与 CONTINUE 命令 ........................................................................................................34 SWITCH 命令...........................................................................................................................34 CATCH 命令 ...........................................................................................................................35 ERROR 命令............................................................................................................................36 RETURN 命令...........................................................................................................................37 EXIT 命令 ................................................................................................................................37 第 8 章. 过程与作用域 ............................................................................................................. 38 8.1 PROC—过程定义命令 ...........................................................................................................38 8.2 作用域...................................................................................................................................40 8.2.1 过程的作用域............................................................................................................ 40 8.2.2 变量的作用域............................................................................................................ 40 UPVAR 命令............................................................................................................................42 8.3 8.4 RENAME 命令 .........................................................................................................................44 8.5 特殊变量...............................................................................................................................45 8.5.1 命令行参数................................................................................................................ 45 8.5.2 env--环境变量数组................................................................................................... 45 EVAL 命令 ..............................................................................................................................46 UPLEVEL 命令..........................................................................................................................48 第 9 章. 正则表达式(REGULAR EXPRESSIONS)................................................................... 49 9.1 REGEXP 命令 ..........................................................................................................................49 9.2 REGSUB 命令...........................................................................................................................51 9.3 正则表达式的语法................................................................................................................52 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 8.6 8.7 ii
Tcl 编程初步 9.3.1 分支(branch)和原子(atom).................................................................................... 52 9.3.2 基本语法................................................................................................................... 52 9.3.2.1 匹配字符........................................................................................................................................52 9.3.2.2 限定匹配........................................................................................................................................53 9.3.2.3 方括号表达式与字符集 .................................................................................................................53 9.3.2.4 匹配分支........................................................................................................................................54 9.3.2.5 量词(Qulifier)...........................................................................................................................54 9.3.2.6 子模式与匹配报告捕获 .................................................................................................................55 9.3.2.7 反斜杠引用....................................................................................................................................56 9.3.2.8 匹配优先级....................................................................................................................................56 9.3.3 高级正则表达式(AREs)......................................................................................... 57 9.3.3.1 反斜杠换码(escape)序列............................................................................................................57 9.3.3.2 归整元素(collating element).....................................................................................................57 9.3.3.3 等价类(equivalence class)........................................................................................................58 9.3.3.4 字符类(character class).............................................................................................................58 9.3.3.5 非贪婪量词....................................................................................................................................59 9.3.3.6 约束量词........................................................................................................................................59 9.3.3.7 回退引用........................................................................................................................................59 9.3.3.8 前瞻(lookahead).........................................................................................................................60 9.3.3.9 换行符敏感的匹配.........................................................................................................................60 9.3.3.10 嵌入式选项 ...............................................................................................................................60 9.3.3.11 扩展语法...................................................................................................................................60 9.3.4 语法小结................................................................................................................... 60 9.3.5 其它支持正则表达式的命令...................................................................................... 60 名字空间................................................................................................................. 62 创建名字空间 ...................................................................................................................62 用::限定符来使用变量和过程...........................................................................................62 名字空间的变量 ...............................................................................................................63 过程的进口与出口............................................................................................................64 内省(INTROSPECTION) .........................................................................................................65 名字空间命令集 ...............................................................................................................65 跟踪与调试............................................................................................................. 67 11.1 CLOCK 命令 ...........................................................................................................................67 clock clicks 命令...................................................................................................... 67 clock seconds 命令................................................................................................ 67 clock format 命令................................................................................................... 68 clock scan 命令....................................................................................................... 70 INFO 命令...............................................................................................................................71 info level .................................................................................................................. 72 info exists ................................................................................................................. 72 TRACE 命令 ............................................................................................................................73 trace variable......................................................................................................... 73 trace vdelete.......................................................................................................... 75 trace vinfo............................................................................................................... 75 脚本库与软件包...................................................................................................... 76 声明和使用软件包............................................................................................................76 12.1.1 软件包定位................................................................................................................ 76 12.1.2 声明软件包命令........................................................................................................ 76 12.1.3 加载软件包命令........................................................................................................ 76 12.1.4 自动加载与软件包索引............................................................................................. 77 12.1.5 用链接库提供软件包................................................................................................. 79 10.1 10.2 10.3 10.4 10.5 10.6 11.1.1 11.1.2 11.1.3 11.1.4 11.2.1 11.2.2 11.3.1 11.3.2 11.3.3 11.2 11.3 第 10 章. 第 11 章. 第 12 章. 12.1 iii
Tcl 编程初步 13.1 13.2 14.2 第 14 章. 14.1 12.2 12.3 第 13 章. PACKAGE 命令集 ...................................................................................................................80 小结 ..................................................................................................................................80 文件操作与程序调用............................................................................................... 81 文件操作...........................................................................................................................81 13.1.1 文件I/O.................................................................................................................... 81 13.1.2 文件系统信息命令..................................................................................................... 82 glob 命令 .................................................................................................................................83 13.1.2.1 13.1.2.2 file 命令集.................................................................................................................................83 程序调用...........................................................................................................................85 13.2.1 用open 命令打开一个进程管道.............................................................................. 85 13.2.2 用exec 命令调用程序.............................................................................................. 87 13.2.3 pid 命令.................................................................................................................... 88 套接字与事件驱动编程简介.................................................................................... 89 套接字编程.......................................................................................................................89 socket 命令.............................................................................................................. 89 14.1.1 Client 端 socket 命令..............................................................................................................89 14.1.1.1 14.1.1.2 Server 端 socket 命令选项......................................................................................................90 14.1.2 用fconfigure 配置套接字........................................................................................ 90 14.1.3 C/S 编程举例............................................................................................................ 90 事件驱动编程 ...................................................................................................................93 14.2.1 after 命令................................................................................................................. 93 fileevent 命令.......................................................................................................... 96 14.2.2 14.2.3 vwait 命令................................................................................................................ 96 fconfigure 命令....................................................................................................... 97 14.2.4 fconfigure 语法.......................................................................................................................97 14.2.4.1 非阻塞 I/O................................................................................................................................98 14.2.4.2 14.2.4.3 缓冲 ..........................................................................................................................................98 参考文献...................................................................................................................................... 100 例索引 例 1-1 输出一段字符串的例子........................................................................................................ 2 例 1-2 source 命令的简单例子...................................................................................................... 3 例 2-1 输出一个词的例子 ............................................................................................................... 5 例 2-2 参数定义、赋值与参数值引用............................................................................................. 5 例 2-3 嵌套$用做替换操作 ............................................................................................................. 6 例 2-4 命令替换[]的例子 ............................................................................................................... 6 例 2-5 {}替换的例子........................................................................................................................ 6 例 2-6 \的例子................................................................................................................................ 7 例 2-7 不规范的续行...................................................................................................................... 7 例 3-1 数学运算举例....................................................................................................................... 9 例 4-1 append 命令的简单例子 ................................................................................................. 10 例 4-2 位置说明符的例子 ............................................................................................................. 11 例 4-3 format 命令的简单例子 .................................................................................................... 11 例 4-4 scan 命令的简单例子 ....................................................................................................... 12 例 4-5 体验 binary format 和 binary scan 的作用.................................................................... 13 例 4-6 binary 命令的简单应用..................................................................................................... 14 例 4-7 subst 命令的简单例子 ....................................................................................................... 14 例 4-8 string compare 和 string equal 进行字符串比较的例子............................................... 16 iv
Tcl 编程初步 例 4-9 字符串替换简单例子.......................................................................................................... 18 例 5-1 使用 list 命令创建列表 ....................................................................................................... 20 例 5-2 concat 命令的例子 .......................................................................................................... 21 例 5-3 lappend 命令简单例子 .................................................................................................... 21 例 5-4 llength 命令的一个简单例子 ............................................................................................ 22 例 5-5 lindex 命令的一个简单例子 .............................................................................................. 22 例 5-6linsert 和 lreplace 命令的例子.......................................................................................... 22 例 5-7 lsearch 命令的简单例子 ................................................................................................... 23 例 5-8 lsearch 与 lreplace 结合删除列表元素........................................................................... 23 例 5-9 lsort 命令简单的例子 ......................................................................................................... 24 例 5-10 split 命令例子 .................................................................................................................. 24 例 5-11 空元素与独立字符元素的 split 例子................................................................................ 24 例 5-12 用 ldel 删除指定元素....................................................................................................... 25 例 5-13 根据步长调整 MAC 地址值 ........................................................................................... 25 例 5-14 foreach 的简单例子:依次打印列表元素 ..................................................................... 27 例 5-15 具有多个值列表的 foreach 命令处理过程..................................................................... 27 例 6-1 认识数组 ............................................................................................................................ 28 例 6-2 混淆普通变量和数组时的错误例子 ................................................................................... 29 例 6-3 通过替换间接使用数组变量 .............................................................................................. 29 例 6-4 数组和列表互换................................................................................................................ 30 例 6-5 array names 的简单例子 ................................................................................................. 31 例 6-6 遍历数组的一个方法举例 .................................................................................................. 31 例 6-7 用数组来定义结构 ............................................................................................................. 31 例 7-1 if/else 控制命令的简单例子 ........................................................................................... 32 例 7-2 一个 for 循环................................................................................................................... 33 例 7-3 while 循环的例子 .............................................................................................................. 34 例 7-4 switch 命令的简单例子..................................................................................................... 34 例 7-5 switch 语句中不当注释引起的错误 ............................................................................... 35 例 7-6 用 catch 捕获命令错误信息............................................................................................. 35 例 7-7 error 命令的例子 ............................................................................................................... 36 例 7-8 用 return 命令从过程中返回 ............................................................................................. 37 例 8-1 带有默认参数的过程定义 .................................................................................................. 38 例 8-2 不定输入参数过程的例子 .................................................................................................. 39 例 8-3 参数名+参数值成对输入的过程定义................................................................................. 39 例 8-4 过程的定义 ........................................................................................................................ 40 例 8-5 变量的作用域..................................................................................................................... 40 例 8-6 全局变量与局部变量的关系 .............................................................................................. 41 例 8-7 用”::”来声明全局变量........................................................................................................ 41 例 8-8 upvar 命令的例子 ............................................................................................................. 42 例 8-9 通过 upvar 命令来传递数组 ............................................................................................. 44 例 8-10 用 rename 命令来取消一个命令.................................................................................... 44 例 8-11 打印命令行参数信息 ....................................................................................................... 45 例 8-12 用 eval 创建新命令的简单例子 ...................................................................................... 46 例 8-13 动态定义过程................................................................................................................... 47 例 8-14 uplevel 的简单例子 ........................................................................................................ 48 例 9-1 regexp 的简单例子........................................................................................................... 50 例 9-2 用 regsub 进行字符串替换的简单例子 ............................................................................ 51 例 9-3 匹配挂靠的简单例子 ......................................................................................................... 53 例 9-4 字符集匹配的例子 ............................................................................................................. 53 例 9-5 使用量词*和?不当引起的错误........................................................................................... 55 v
Tcl 编程初步 例 9-6 子模式捕获......................................................................................................................... 55 例 9-7 屏蔽子模式报告 ................................................................................................................. 55 例 9-8 子模式综合运用的例子:搜索脚本文件中定义的过程 ..................................................... 55 例 9-9 归整元素匹配字符串 ......................................................................................................... 58 例 9-10 字符类的简单例子 ........................................................................................................... 58 例 10-1 定义名字空间 Counter:.................................................................................................. 62 例 10-2 动态定义名字空间 ........................................................................................................... 62 例 10-3 限定名比较的简单例子.................................................................................................... 63 例 10-4 名字空间自动处理引用变量的归属................................................................................. 64 例 10-5 过程的进口与出口的简单例子 ........................................................................................ 64 例 10-6 namespace origin 命令例子 ........................................................................................ 65 例 11-1 计算系统时钟滴答数........................................................................................................ 67 例 11-2clock format 在 windows 上的简单例子....................................................................... 69 例 11-3 Tcl 识别的系统编码方式.................................................................................................. 69 例 11-4 消除 clock format 输出中的乱码 .................................................................................. 70 例 11-5 用 info 测试变量是否存在............................................................................................... 71 例 11-6 用 info level 命令控制过程的循环嵌套 .......................................................................... 72 例 11-7 用 trace variable 跟踪变量的简单例子 ........................................................................ 73 例 11-8 trace vinfo 的例子 ......................................................................................................... 75 例 12-1 auto_path 的内容与操作............................................................................................... 76 例 12-2 pkg_mkIndex 命令......................................................................................................... 77 例 12-3 简单的软件包加载的例子................................................................................................ 78 例 13-1 用 open 命令打开文件,并输入数据 ............................................................................. 82 例 13-2 lstat 和 stat 命令举例...................................................................................................... 84 例 13-3 用 open 命令打开只读进程管道 ................................................................................... 86 例 13-4 用 open 命令打开进程管道又一例................................................................................. 86 例 13-5 用 exec 处理管道与 I/O 重定向 ..................................................................................... 87 例 13-6 用 pid 命令检查进程 ID................................................................................................... 88 例 14-1 基于 socket 实现的 C/S(Client/Server)简单模型......................................................... 90 例 14-2 after 命令的简单应用 ..................................................................................................... 94 例 14-3vwait 命令的简单例子 ..................................................................................................... 97 表索引 表 3-1 数学与逻辑运算符 ............................................................................................................... 8 表 3-2 数学函数 .............................................................................................................................. 8 表 4-1 比较有用的字符串操作命令 .............................................................................................. 10 表 4-2 格式转换符 ........................................................................................................................ 11 表 4-3 格式标志符 ........................................................................................................................ 11 表 4-4 二进制转换类型................................................................................................................. 13 表 4-5 string 命令 ......................................................................................................................... 15 表 4-6 使用 string match 来匹配字符的结构.............................................................................. 16 表 4-7 字符类名目 ........................................................................................................................ 18 表 5-1 列表相关命令..................................................................................................................... 20 表 6-1 数组操作命令表................................................................................................................. 30 表 9-1regexp 选项 ....................................................................................................................... 50 表 9-2 AREs 的换码表................................................................................................................... 57 表 10-1namespace 命令............................................................................................................ 65 表 11-1 clock 命令....................................................................................................................... 67 表 11-2 clock format 的域描述符............................................................................................... 68 vi
Tcl 编程初步 表 11-3 clock format 特定于 UNIX 系统的域描述符.................................................................. 68 表 11-4 info 命令集 ...................................................................................................................... 71 表 12-1 pkg_mkIndex 命令开关选项.......................................................................................... 77 表 12-2 package 命令................................................................................................................ 80 表 13-1 文件操作命令................................................................................................................... 81 表 13-2 open 命令的 acess 变量说明 ........................................................................................ 81 表 13-3 file 命令集........................................................................................................................ 83 表 13-4 file stat 命令数组元素..................................................................................................... 85 表 13-5 重定向指示标识和说明.................................................................................................... 88 表 14-1 after 命令 ........................................................................................................................ 93 表 14-2 fconfigure 控制的 I/O 通道属性.................................................................................... 98 图索引 图 1 TclTour 界面............................................................................................................................ 1 图 2 启动 Tcl 交互界面.................................................................................................................... 2 图 3 交互界面.................................................................................................................................. 2 图 4 启动 Windows 上的 Tcl Help................................................................................................. 4 图 5 使用在另外一个 Tcl 文件中的过程 ....................................................................................... 39 图 6 regexp 匹配过程示意图....................................................................................................... 50 图 7 文件访问控制权限说明 ......................................................................................................... 82 图 8 进程管道................................................................................................................................ 85 图 9 C/S 界面................................................................................................................................ 93 vii
分享到:
收藏