《系统学习TCL脚本入门教程.doc》由会员分享,可在线阅读,更多相关《系统学习TCL脚本入门教程.doc(75页珍藏版)》请在金锄头文库上搜索。
1、系统学习 TCL 脚本入门教程 版本 版本 1 0 作者 次作者 次 第 2 页 共 75 页 目目 录录 1TCL 语法语法 4 1 1简介 4 1 2运行环境 4 1 3本文约定 4 1 4参考资料 4 2引言引言 5 2 1第 1 课 简单文本输出 5 2 2第 2 课 给变量赋值 5 2 3第 3 课 命令的赋值与置换一 6 2 4第 4 课 命令的赋值与置换二 7 2 5第 5 课 命令的赋值与置换三 7 2 6第 6 课 算数运算 8 2 7第 7 课 文本比较 SWITCH 应用 9 2 8第 8 课 数值比较 IF 应用 10 2 9第 9 课 WHILE 循环 11 2 10
2、第 10 课 FOR 循环和INCR 11 2 11第 11 课 过程 PROC 12 2 12第 12 课 过程 PROC 的参数定义 13 2 13第 13 课 变量的作用域 13 2 14第 14 课 LIST 结构 14 2 15第 15 课 LIST 项的增删改 15 2 16第 16 课 更多 LIST 相关 16 2 17第 17 课 字符串函数 17 2 18第 18 课 更多字符串函数 17 2 19第 19 课 修改字符串函数 20 2 20第 20 课 正则表达式 21 2 21第 21 课 更多正则表达式 22 2 22第 22 课 数组 24 2 23第 23 课 更
3、多数组相关 25 2 24第 24 课 文件存取 28 2 25第 25 课 文件信息 30 2 26第 26 课 TCL 中的子进程调用 OPEN 在命令后注释用 在行开头两者均可 2 puts 输出文本 多个单词如被空格或 TAB 分隔需要使用 或 括起来 3 多个命令写在一行使用 间隔 例子 002 puts tcl ok 正确 ok 正确 ok 正确 分号和井号之间可以有空格 puts Hello 正确 puts Hello World 正确 多个单词之间不是被空格或者 TAB 分隔开 puts Hello World 这行命令运行出错 被空格分隔 puts Hello World I
4、n quotes 注释 puts Hello World In Braces 这行命令运行出错 必须使用 作为注释符号 puts This is line 1 puts this is line 2 正确 用分号分隔两个命令 puts Hello World With a semicolon inside the quotes 正确 分号在双引号内 作为字符串 一部分 2 2 第第 2 课 给变量赋值课 给变量赋值 讲解 1 set 给变量赋值 格式为 set var value 例子 003 var tcl 给变量 X 赋一个字符串 set X This is a string 给变量 Y
5、赋一个数字 set Y 1 24 显示 X 和 Y 的内容 puts X puts Y 打印一个分隔串 puts 第 6 页 共 75 页 打印在一行中 推荐使用双引号 set label The value in Y is puts label Y puts label Y 2 3 第第 3 课 命令的赋值与置换一课 命令的赋值与置换一 讲解 1 TCL 中命令的赋值分为置换和赋值两个步骤 2 续行符为 3 转义符同为 4 特殊字符列表 序号字符输出十六进制 1 a响铃 x07 2 b回车 x08 3 f清屏 x0c 4 n换行 x0a 5 r回车 x0d 6 t制表符 x09 7 v垂直制
6、表符 Vertical Tab x0b 8 ddd八进制值d 0 7 9 xhh十六进制值h 0 9 A F a f 例子 004 eval tcl Show how a affects the set Z Albany set Z LABEL The Capitol of New York is puts Z LABEL Z 显示 Albany puts Z LABEL Z 显示 Z 被 转义 The next line needs a backslash to escape the puts nBen Franklin is on the 100 00 bill n 换行 100 前的 必
7、须有 否则会将 100 作为 一个变量 提示出错 set a 100 00 puts Washington is not on the a bill This is not what you want puts Lincoln is not on the a bill 显示 100 说明是后结合的 先置换了 a 此处严格的 写应该写为 a puts Hamilton is not on the a bill 显示 a puts Ben Franklin is on the a bill 显示 100 说明是后结合的 先置换了 a 第 7 页 共 75 页 puts n examples of
8、escape strings puts Tab tTab tTab puts This string prints out non two lines 行中 没有打印出来 如果要打印出来 需要写 成 puts This string comes out on a single line 当一行太长 不便于阅读 使用 做续行符 2 4 第第 4 课 命令的赋值与置换二课 命令的赋值与置换二 讲解 1 最外层是 则不会进行置换操作 但其中的续行符仍然有效 例子 005 escape tcl set Z Albany set Z LABEL The Capitol of New York is pu
9、ts n examples of differences between and and 前的双引号前必须有 进行转义 否则这个双引号回和前面的双引号结合 导致成了 xxx and 的结构 会提示出错 puts Z LABEL Z 显示 The Capitol of New York is Albany puts Z LABEL Z 显示 Z LABEL Z 没有进行置换 中不会置换 puts n examples of differences in nesting and puts Z LABEL Z 最外层是双引号 所以进行了置换 puts Who said What this count
10、ry needs is a good Z cigar 最外层是花括号 所以没有进行置换 puts n examples of escape strings puts There are no substitutions done within braces n r x0a f v puts But the escaped newline at the end of a string is still evaluated as a space 续行符仍然生效 2 5 第第 5 课 命令的赋值与置换三课 命令的赋值与置换三 讲解 1 可以传递其中的命令结果 注意不能被 包含 2 双引号包含的 中的
11、命令可以正常执行 命令结果也可以传出 3 包含的 中的命令不会执行 更不会有命令结果传出来 例子 006 escape tcl set x abc puts A simple substitution x n 显示 abc 第 8 页 共 75 页 set y set x def 先执行 中的命令 将 def 赋值给 x 然后将该命令的结果赋值给 y puts Remember that set returns the new value of the variable X x Y y n 显示 x 和 y 都是 def set z set x This is a string within
12、quotes within braces 由于在 中 所以并没有执行对 x 的赋值 只是将 赋值给 z puts Note the curly braces z n set a set x This is a string within braces within quotes 执行了对 x 的赋值操作 并将值传出来赋 给了 a puts See how the set is executed a puts x is x n set b set y This is a string within braces within quotes puts Note the escapes the br
13、acket n b is b puts y is y 2 6 第第 6 课 算数运算课 算数运算 讲解 1 操作符 序号操作符解释 1 负号 正号 位操作非 逻辑非 2 乘 除 取模 3 加 减 4 循环右移 5 set Y 256 行末是否有分号都可以 set Z expr Y X 变量是否被双引号包含都可以 不过建议使用双引号 set Z expr Y X set Z LABEL Y plus X is puts Z LABEL Z puts The square root of Y is expr sqrt Y n puts Because of the precedence rules
14、 5 3 4 is expr 3 4 5 puts Because of the parentheses 5 3 4 is expr 5 3 4 puts n more examples of differences between and puts Z LABEL expr Y X 外层是花括号不会进行置换 puts Z LABEL expr Y X 外层是双引号会进行置换 puts The command to add two numbers is expr a b 2 7 第第 7 课 文本比较 课 文本比较 SWITCH 应用应用 讲解 1 switch 的分支中的命令使用花括号包含
15、但是并不会影响花括号中的命令执行 切记 这是 switch 的格式 2 如果不想分支条件进行置换 需要在外加上花括号 不会影响分支中的命令执行 例子 008 switch tcl Set the variables we ll be comparing set x ONE set y 1 set z ONE This is legal switch x ONE puts ONE 1 TWO puts TWO 2 default puts NO MATCH 这种写法合法 但是阅读不便 switch x ONE puts ONE 1 TWO puts TWO 2 default puts NO M
16、ATCH 这种写法好看一些 推荐 第 10 页 共 75 页 下面这种写法 z 被置换 走入 z 的条件分支 表面上看条件分支中的命令在花括号内 这只是 switch 的一 种格式 所以其中的命令仍然被执行了 switch x z set y1 expr y 1 puts MATCH z y z is y1 ONE set y1 expr y 1 puts MATCH ONE y one is y1 TWO set y1 expr y 2 puts MATCH TWO y two is y1 THREE set y1 expr y 3 puts MATCH THREE y three is y1 default puts x does not match any of these choices This form of the command disables variable substitution in the pattern 下面为了不置换 z 在外层加上了花括号 于是走入了 ONE 分支 而分支中的命令仍然被执行了 switch x z set y1 expr y 1 pu