系统学习TCL脚本入门教程
版本:1. 0
目 录
1 1.1 1.2 1.3 1.4 2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 2.27 2.28 2.29 2.30 2.31 2.32 2.33 2.34 2.35 2.36
TCL语法 ............................................................................................................................................................................... 4 简介......................................................................................................................................................................................... 4 运行环境................................................................................................................................................................................. 4 本文约定................................................................................................................................................................................. 4 参考资料................................................................................................................................................................................. 4 引言......................................................................................................................................................................................... 5 第1课:简单文本输出......................................................................................................................................................... 5 第2课:给变量赋值............................................................................................................................................................. 5 第3课:命令的赋值与置换一............................................................................................................................................. 6 第4课:命令的赋值与置换二............................................................................................................................................. 7 第5课:命令的赋值与置换三............................................................................................................................................. 7 第6课:算数运算................................................................................................................................................................. 8 第7课:文本比较-SWITCH应用 .................................................................................................................................... 9 第8课:数值比较-IF应用 .............................................................................................................................................. 10 第9课:WHILE 循环 ........................................................................................................................................................ 10
第10课:FOR循环和INCR ...................................................................................................................................... 11 第11课:过程PROC ......................................................................................................................................................... 11
第12课:过程PROC的参数定义 ........................................................................................................................... 12 第13课:变量的作用域 ........................................................................................................................................... 13 第14课:LIST结构 .................................................................................................................................................. 14 第15课:LIST项的增删改 ...................................................................................................................................... 14 第16课:更多LIST相关 ......................................................................................................................................... 15 第17课:字符串函数 ............................................................................................................................................... 17 第18课:更多字符串函数 ....................................................................................................................................... 17 第19课:修改字符串函数 ....................................................................................................................................... 19 第20课:正则表达式 ............................................................................................................................................... 21 第21课:更多正则表达式 ....................................................................................................................................... 22 第22课:数组 ........................................................................................................................................................... 24 第23课:更多数组相关 ........................................................................................................................................... 25 第24课:文件存取 ................................................................................................................................................... 28 第25课:文件信息 ................................................................................................................................................... 30 第26课:TCL中的子进程调用-OPEN & EXEC...................................................................................................... 32 第27课:命令或者变量是否存在-INFO ................................................................................................................ 33 第28课:解释器状态-INFO .................................................................................................................................... 35 第29课:过程信息-INFO ........................................................................................................................................ 35 第30课:模块化-SOURCE ....................................................................................................................................... 36 第31课:建库-UNKNOWN & INFO LIBRARY............................................................................................................. 37 第32课:创建命令-EVAL ....................................................................................................................................... 39 第33课:在EVAL中应用FORMAT & LIST................................................................................................................. 39 第34课:不使用EVAL替换-FORMAT & SUBST....................................................................................................... 41 第35课:改变工作目录- CD & PWD ...................................................................................................................... 42 第36课:调试和错误-ERRORINFO & ERRORCODE & CATCH................................................................................... 43
2.37 2.38 2.39 2.40 2.41 2.42 2.43 2.44 3
第37课:调试-TRACE ............................................................................................................................................. 44 第38课:命令行参数和环境串 ............................................................................................................................... 45 第39课:TIME & UNSET ............................................................................................................................................. 46 第40课:SOCKET & FILEEVENT & VWAIT ................................................................................................................... 48 第41课:日期时间-CLOCK..................................................................................................................................... 50 第42课:I/O通道-FBLOCKED & FCONFIG................................................................................................................ 52 第43课:子解释器 ................................................................................................................................................... 54 第44课:数据库操作 ............................................................................................................................................... 55 跋........................................................................................................................................................... 错误!未定义书签。
第 3 页 共 60 页
1 TCL语法
1.1 简介
作为脚本语言,tcl语法简单而功能强大。它诞生于80年代初,进入中国的时间也许多年了。不过关于tcl的资料多而杂,一时心血来潮,想到写一篇文章,以例子为中心,系统讲解tcl语法,让技术人员花最少的时间对tcl有个全面而系统的了解,工作上使用时可以速查或参考代码。于是有了本文。
1.2 运行环境
多数代码运行在 ActiveTcl8.3.4.1-9.win32-ix86.exe 安装以后的windows环境中,只有两个例程运行在unix的环境下。
1.3 本文约定
本文为了便于速查和速学,所以每课分成讲解和例子两部分,主要是围绕着例子进行讲解。文字不多。
1.4 参考资料
本文主要参考了《TclTutor 2.0 beta4》。
2 引言
2.1 第1课:简单文本输出
讲解:
1. 注释符号是 # 或者 ;# ,在命令后注释用 ;# ,在行开头两者均可; 2. puts :输出文本,多个单词如被空格或TAB分隔需要使用“”或{} 括起来; 3. 多个命令写在一行使用 ; 间隔。
例子:002_puts.tcl
# ok ;# 正确 ;# ok ;# 正确
; # ok ;# 正确, 分号和井号之间可以有空格 puts Hello ;# 正确
puts Hello,World ;# 正确,多个单词之间不是被空格或者TAB分隔开 puts Hello World ;# 这行命令运行出错,被空格分隔 puts \ ;# 注释 puts {Hello, World - In Braces}
# 这行命令运行出错,必须使用 ;# 作为注释符号
puts \ ;# 正确,用分号分隔两个命令
puts \ a semicolon inside the quotes\ ;#正确,分号在双引号内,作为字符串一部分
2.2 第2课:给变量赋值
讲解:
1. set:给变量赋值,格式为 set var value
例子:003_var.tcl
;# 给变量X赋一个字符串 set X \
;# 给变量Y赋一个数字 set Y 1.24
;# 显示X和Y的内容 puts $X puts $Y
;# 打印一个分隔串 puts \
;# 打印在一行中,推荐使用双引号 set label \