目 录
1 TCL语法 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 第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课:修改字符串函数 19
2.20 第20课:正则表达式 21
2.21 第21课:更多正则表达式 22
2.22 第22课:数组 24
2.23 第23课:更多数组相关 25
2.24 第24课:文件存取 28
2.25 第25课:文件信息 30
2.26 第26课:TCL中的子进程调用-open & exec 33
2.27 第27课:命令或者变量是否存在-info 34
2.28 第28课:解释器状态-info 35
2.29 第29课:过程信息-info 36
2.30 第30课:模块化-source 37
2.31 第31课:建库-unknown & info library 38
2.32 第32课:创建命令-eval 40
2.33 第33课:在eval中应用format & list 40
2.34 第34课:不使用eval替换-format & subst 42
2.35 第35课:改变工作目录- cd & pwd 43
2.36 第36课:调试和错误-errorinfo & errorCode & catch 43
2.37 第37课:调试-trace 45
2.38 第38课:命令行参数和环境串 46
2.39 第39课:time & unset 47
2.40 第40课:socket & fileevent & vwait 49
2.41 第41课:日期时间-clock 51
2.42 第42课:i/o通道-fblocked & fconfig 53
2.43 第43课:子解释器 55
2.44 第44课:数据库操作 57
3 跋 60
1 TCL语法
1.1 简介
作为脚本语言,tcl语法简单而功能强大。它诞生于80年代初,进入中国的时间也许多年了。不过关于tcl的资料多而杂,一时心血来潮,想到写一篇文章,以例子为中心,系统讲解tcl语法,让技术人员花最少的时间对tcl有个全面而系统的了解,工作上使用时可以速查或参考代码。于是有了本文。
1.2 运行环境
多数代码运行在 ActiveTcl8.3.4. 安装以后的windows环境中,只有两个例程运行在unix的环境下。
1.3 本文约定
本文为了便于速查和速学,所以每课分成讲解和例子两部分,主要是围绕着例子进行讲解。文字不多。
1.4 参考资料
本文主要参考了《TclTutor 2.0 beta4》。
2 引言
2.1 第1课:简单文本输出
讲解:
1. 注释符号是 # 或者 ;# ,在命令后注释用 ;# ,在行开头两者均可;
2. puts :输出文本,多个单词如被空格或TAB分隔需要使用“”或{} 括起来;
3. 多个命令写在一行使用 ; 间隔。
例子:l
# ok ;# 正确
;# ok ;# 正确
; # ok ;# 正确, 分号和井号之间可以有空格
puts Hello ;# 正确
puts Hello,World ;# 正确,多个单词之间不是被空格或者TAB分隔开
puts Hello World ;# 这行命令运行出错,被空格分隔
puts "Hello, World - In 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
例子:l
;# 给变量X赋一个字符串
set X "This is a string"
;# 给变量Y赋一个数字
set Y 1.24
;# 显示X和Y的内容
puts $X
puts $Y
;# 打印一个分隔串
puts "..............................."
;# 打印在一行中,推荐使用双引号
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 | 垂直制表符(Vertical Tab) | \x0b |
8 | \ddd | 八进制值 | d=0-7 |
9 | \xhh | 十六进制值 | h=0-9,A-F,a-f |
字符串操作函数puts例子:l
;# 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前的 \ 必须有,否则会将100作为一个变量,提示出错
set a 100.00
puts "Washington is not on the $a bill" ;# This is not what you want
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论