Tcl编程初步 编辑版本日期著者 :1.5:2004-3-2:陈涛 上海贝尔阿尔卡特有限公司 Tcl编程初步 总目录 总目录...............................................................................................................................................
I
例索引.............................................................................................................................................
IV 表索引.............................................................................................................................................
VI 图索引............................................................................................................................................
VII 第1章.TCL基本知识................................................................................................................
1
1.1什么是TCL..............................................................................................................................11.2TCL自学工具...........................................................................................................................11.3TCL软件包..............................................................................................................................21.4TCL命令格式...........................................................................................................................21.5TCL脚本文件和SOURCE命令..................................................................................................31.6可执行脚本文件(EXECUTABLEFILE)...........................................................................................31.7获得帮助.................................................................................................................................4
1.7.1Windows系统.............................................................................................................41.7.2Unix系统......................................................................................................................4
第2章.输出、赋值与替换........................................................................................................
5
2.1PUTS.........................................................................................................................................5
2.2SET&UNSET..............................................................................................................................5
2.3替换........................................................................................................................................6
2.3.1$...................................................................................................................................6
2.3.22.3.3
[]..................................................................................................................................6""和{}..........................................................................................................................6
2.3.4\...................................................................................................................................7
第3章.数学表达式与EXPR命令..............................................................................................
8
3.1数学和逻辑运算符..................................................................................................................83.2数学函数.................................................................................................................................83.3数学运算举例.........................................................................................................................93.4INCR命令................................................................................................................................9
第4章.字符串........................................................................................................................
10 4.1基本命令集...........................................................................................................................104.2APPEND命令..........................................................................................................................104.3FORMAT命令..........................................................................................................................10 4.3.1format命令说明......................................................................................................
104.3.2format举例..............................................................................................................
114.4SCAN命令.............................................................................................................................124.5BINARY命令...........................................................................................................................134.6SUBST命令..............................................................................................................................144.7STRING命令...........................................................................................................................154.7.1string命令列表.........................................................................................................
154.7.2字符串比较................................................................................................................
164.7.3stringmatch字符串匹配.........................................................................................
164.7.4字符串替换................................................................................................................
184.7.5字符类别(class)测试.................................................................................................
184.7.6字符串映射................................................................................................................
19 i Tcl编程初步 第5章.TCL列表操作..............................................................................................................
20 5.1列表命令集...........................................................................................................................205.2LIST命令.................................................................................................................................205.3CONCAT命令.........................................................................................................................215.4LAPPEND命令........................................................................................................................215.5LLENGTH命令.........................................................................................................................225.6LINDEX命令............................................................................................................................225.7LRANGE命令..........................................................................................................................225.8LINSERT和LREPLACE命令........................................................................................................225.9LSEARCH命令.........................................................................................................................235.10LSORT命令.............................................................................................................................245.11JOIN与SPLIT命令...................................................................................................................245.12FOREACH控制结构................................................................................................................27 第6章.数组............................................................................................................................
28 6.1数组的定义与格式................................................................................................................286.2数组变量...............................................................................................................................296.3多维数组...............................................................................................................................296.4数组操作命令.......................................................................................................................30 6.4.1arrayget命令.........................................................................................................
306.4.2arraynames命令....................................................................................................
306.4.3遍历数组...................................................................................................................
316.4.4用数组定义结构........................................................................................................
31 第7章.控制结构命令.............................................................................................................
32 7.1IF/ELSE命令............................................................................................................................327.2FOR命令................................................................................................................................337.3WHILE命令.............................................................................................................................337.4BREAK与CONTINUE命令........................................................................................................347.5SWITCH命令...........................................................................................................................347.6CATCH命令...........................................................................................................................357.7ERROR命令............................................................................................................................367.8RETURN命令...........................................................................................................................377.9EXIT命令................................................................................................................................37 第8章.过程与作用域.............................................................................................................
38 8.1PROC—过程定义命令...........................................................................................................388.2作用域...................................................................................................................................40 8.2.1过程的作用域............................................................................................................
408.2.2变量的作用域............................................................................................................
408.3UPVAR命令............................................................................................................................428.4RENAME命令.........................................................................................................................448.5特殊变量...............................................................................................................................458.5.1命令行参数................................................................................................................
458.5.2env--环境变量数组...................................................................................................
458.6EVAL命令..............................................................................................................................468.7UPLEVEL命令..........................................................................................................................48 第9章.正则表达式(REGULAREXPRESSIONS)...................................................................49 9.1REGEXP命令..........................................................................................................................499.2REGSUB命令...........................................................................................................................519.3正则表达式的语法................................................................................................................52 ii Tcl编程初步 9.3.19.3.2 9.3.2.19.3.2.29.3.2.39.3.2.49.3.2.59.3.2.69.3.2.79.3.2.8 9.3.3 9.3.3.19.3.3.29.3.3.39.3.3.49.3.3.59.3.3.69.3.3.79.3.3.89.3.3.99.3.3.109.3.3.11 9.3.49.3.5 分支(branch)和原子(atom)....................................................................................
52基本语法...................................................................................................................
52 匹配字符........................................................................................................................................
52限定匹配........................................................................................................................................
53方括号表达式与字符集.................................................................................................................53匹配分支........................................................................................................................................
54量词(Qulifier)...........................................................................................................................54子模式与匹配报告捕获.................................................................................................................55反斜杠引用....................................................................................................................................
56匹配优先级....................................................................................................................................
56 高级正则表达式(AREs).........................................................................................
57 反斜杠换码(escape)序列............................................................................................................
57归整元素(collatingelement).....................................................................................................57等价类(equivalenceclass)........................................................................................................58字符类(characterclass).............................................................................................................58非贪婪量词....................................................................................................................................
59约束量词........................................................................................................................................
59回退引用........................................................................................................................................
59前瞻(lookahead).........................................................................................................................
60换行符敏感的匹配.........................................................................................................................
60 嵌入式选项...............................................................................................................................60扩展语法...................................................................................................................................60 语法小结...................................................................................................................
60其它支持正则表达式的命令......................................................................................60 第10章. 名字空间.................................................................................................................
62 10.1创建名字空间...................................................................................................................62 10.2用::限定符来使用变量和过程...........................................................................................62 10.3名字空间的变量...............................................................................................................63 10.4过程的进口与出口............................................................................................................64 10.5 内省(INTROSPECTION).........................................................................................................65 10.6名字空间命令集...............................................................................................................65 第11章. 跟踪与调试.............................................................................................................
67 11.1CLOCK命令...........................................................................................................................6711.1.1clockclicks命令......................................................................................................
6711.1.2clockseconds命令................................................................................................
6711.1.3clockformat命令...................................................................................................
6811.1.4clockscan命令.......................................................................................................
70 11.2INFO命令...............................................................................................................................71 11.2.1infolevel..................................................................................................................
7211.2.2infoexists.................................................................................................................
7211.3TRACE命令............................................................................................................................73 11.3.1tracevariable.........................................................................................................
7311.3.2tracevdelete..........................................................................................................
7511.3.3tracevinfo...............................................................................................................
75 第12章. 脚本库与软件包......................................................................................................
76 12.112.1.112.1.212.1.312.1.412.1.5 声明和使用软件包............................................................................................................76软件包定位................................................................................................................
76声明软件包命令........................................................................................................
76加载软件包命令........................................................................................................
76自动加载与软件包索引.............................................................................................
77用链接库提供软件包.................................................................................................
79 iii Tcl编程初步 12.2PACKAGE命令集...................................................................................................................8012.3小结..................................................................................................................................80 第13章. 文件操作与程序调用...............................................................................................
81 13.1文件操作...........................................................................................................................81 13.1.1文件I/O....................................................................................................................
81 13.1.2文件系统信息命令.....................................................................................................
82 13.1.2.1 glob命令.................................................................................................................................83 13.1.2.2 file命令集.................................................................................................................................83 13.2程序调用...........................................................................................................................85 13.2.1用open命令打开一个进程管道..............................................................................85 13.2.2用exec命令调用程序..............................................................................................
87 13.2.3pid命令....................................................................................................................
88 第14章. 套接字与事件驱动编程简介....................................................................................
89 14.1套接字编程.......................................................................................................................89 14.1.1socket命令..............................................................................................................
89 14.1.1.1 Client端socket命令..............................................................................................................89 14.1.1.2 Server端socket命令选项......................................................................................................90 14.1.2用fconfigure配置套接字........................................................................................90 14.1.3C/S编程举例............................................................................................................
90 14.2事件驱动编程...................................................................................................................93 14.2.1after命令.................................................................................................................
93 14.2.2fileevent命令..........................................................................................................
96 14.2.3vwait命令................................................................................................................
96 14.2.4fconfigure命令.......................................................................................................
97 14.2.4.1 fconfigure语法.......................................................................................................................97 14.2.4.2 非阻塞I/O................................................................................................................................98 14.2.4.3 缓冲..........................................................................................................................................98 参考文献......................................................................................................................................
100 例索引 例1-1输出一段字符串的例子........................................................................................................
2例1-2source命令的简单例子......................................................................................................
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-1append命令的简单例子.................................................................................................
10例4-2位置说明符的例子.............................................................................................................
11例4-3format命令的简单例子....................................................................................................
11例4-4scan命令的简单例子.......................................................................................................
12例4-5体验binaryformat和binaryscan的作用....................................................................13例4-6binary命令的简单应用.....................................................................................................
14例4-7subst命令的简单例子.......................................................................................................
14例4-8pare和stringequal进行字符串比较的例子...............................................16 iv Tcl编程初步 例4-9字符串替换简单例子..........................................................................................................
18例5-1使用list命令创建列表.......................................................................................................
20例5-2concat命令的例子..........................................................................................................
21例5-3lappend命令简单例子....................................................................................................
21例5-4llength命令的一个简单例子............................................................................................
22例5-5lindex命令的一个简单例子..............................................................................................
22例5-6linsert和lreplace命令的例子..........................................................................................22例5-7lsearch命令的简单例子...................................................................................................
23例5-8lsearch与lreplace结合删除列表元素...........................................................................23例5-9lsort命令简单的例子.........................................................................................................
24例5-10split命令例子..................................................................................................................
24例5-11空元素与独立字符元素的split例子................................................................................24例5-12用ldel删除指定元素.......................................................................................................
25例5-13根据步长调整MAC地址值...........................................................................................
25例5-14foreach的简单例子:依次打印列表元素.....................................................................27例5-15具有多个值列表的foreach命令处理过程.....................................................................27例6-1认识数组............................................................................................................................
28例6-2混淆普通变量和数组时的错误例子...................................................................................29例6-3通过替换间接使用数组变量..............................................................................................
29例6-4数组和列表互换................................................................................................................
30例6-5arraynames的简单例子.................................................................................................
31例6-6遍历数组的一个方法举例..................................................................................................
31例6-7用数组来定义结构.............................................................................................................
31例7-1if/else控制命令的简单例子...........................................................................................
32例7-2一个for循环...................................................................................................................
33例7-3while循环的例子..............................................................................................................
34例7-4switch命令的简单例子.....................................................................................................
34例7-5switch语句中不当注释引起的错误...............................................................................35例7-6用catch捕获命令错误信息.............................................................................................
35例7-7error命令的例子...............................................................................................................
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-8upvar命令的例子.............................................................................................................
42例8-9通过upvar命令来传递数组.............................................................................................
44例8-10用rename命令来取消一个命令....................................................................................
44例8-11打印命令行参数信息.......................................................................................................
45例8-12用eval创建新命令的简单例子......................................................................................46例8-13动态定义过程...................................................................................................................
47例8-14uplevel的简单例子........................................................................................................
48例9-1regexp的简单例子...........................................................................................................
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-6namespaceorigin命令例子........................................................................................65例11-1计算系统时钟滴答数........................................................................................................
67例11-2clockformat在windows上的简单例子.......................................................................69例11-3Tcl识别的系统编码方式..................................................................................................
69例11-4消除clockformat输出中的乱码..................................................................................70例11-5用info测试变量是否存在...............................................................................................
71例11-6用infolevel命令控制过程的循环嵌套..........................................................................72例11-7用tracevariable跟踪变量的简单例子........................................................................73例11-8tracevinfo的例子.........................................................................................................
75例12-1auto_path的内容与操作...............................................................................................
76例12-2pkg_mkIndex命令.........................................................................................................
77例12-3简单的软件包加载的例子................................................................................................
78例13-1用open命令打开文件,并输入数据.............................................................................82例13-2lstat和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-2after命令的简单应用.....................................................................................................
94例14-3vwait命令的简单例子.....................................................................................................
97 表索引 表3-1数学与逻辑运算符...............................................................................................................
8表3-2数学函数..............................................................................................................................
8表4-1比较有用的字符串操作命令..............................................................................................
10表4-2格式转换符........................................................................................................................
11表4-3格式标志符........................................................................................................................
11表4-4二进制转换类型.................................................................................................................
13表4-5string命令.........................................................................................................................
15表4-6使用stringmatch来匹配字符的结构..............................................................................16表4-7字符类名目........................................................................................................................
18表5-1列表相关命令.....................................................................................................................
20表6-1数组操作命令表.................................................................................................................
30表9-1regexp选项.......................................................................................................................
50表9-2AREs的换码表...................................................................................................................
57表10-1namespace命令............................................................................................................
65表11-1clock命令.......................................................................................................................
67表11-2clockformat的域描述符...............................................................................................
68 vi Tcl编程初步表11-3clockformat特定于UNIX系统的域描述符..................................................................68表11-4info命令集......................................................................................................................
71表12-1pkg_mkIndex命令开关选项..........................................................................................
77表12-2package命令................................................................................................................
80表13-1文件操作命令...................................................................................................................
81表13-2open命令的acess变量说明........................................................................................81表13-3file命令集........................................................................................................................
83表13-4filestat命令数组元素.....................................................................................................
85表13-5重定向指示标识和说明....................................................................................................
88表14-1after命令........................................................................................................................
93表14-2fconfigure控制的I/O通道属性....................................................................................98 图索引 图1TclTour界面............................................................................................................................
1图2启动Tcl交互界面....................................................................................................................
2图3交互界面..................................................................................................................................
2图4启动Windows上的TclHelp.................................................................................................
4图5使用在另外一个Tcl文件中的过程.......................................................................................39图6regexp匹配过程示意图.......................................................................................................
50图7文件访问控制权限说明.........................................................................................................
82图8进程管道................................................................................................................................
85图9C/S界面................................................................................................................................
上一篇2,python怎么换行