Linux教程Linux
首页
基础知识
Linux业界
Linux系统
Linux人物
Linux文化
Linux资讯
Linux综合
当前位置:
Linux教程
-
Linux
- Tcl 语法
Tcl 语法
LinuxByte注:本站有
TCL/TK下载
中文翻译:
大明
by Brent B. Welch
关于作者:
Brent Welch 正在开发www.scriptics.com站点, 包括一个Tcl有关的统一资源定位(Tcl资源中心)注释数据库和TclPro产品的ecommerce infrasturcture.同时,他还在开发几个大型的 Tcl/Tk程序,有运行于www.scriptics.com站点上的Tcl Httpd web 服务器, 有Exmh 邮件用户界面和webtk HTML 编辑器.另外,他还编写了 <<使用 Tcl 和 Tk 熟练编程> >. Welch1982年在科罗拉多州Boulder大学宇宙航空工程专业获学士学位,1986年在加州Berkeley大学计算机专业获硕士学位, 1990年在加州Berkeley大学计算机专业获博士学位。开始,Welch是施乐公司帕洛阿尔托研究中心的研究员,研究分布式系统。后来,他加入太阳微系统实验室,成为Tcl/Tk小组成员。他还是美国计算机协会和电气和电子工程师协会成员。主页地址:
http://www.beedub.com/
Abstract:
本文介绍了Tcl语言的语法和基本内容.
--------------------------------------------------------------------------------
Tcl语法简介
作为一种脚本语言,Tcl具有简单的语法.
cmd arg arg arg
一条Tcl命令由空格分割的单词组成. 其中, 第一个单词是命令名称, 其余的是命令参数 .
$foo
$符号代表变量的值. 在本例中, 变量名称是foo.
[clock seconds]
方括号执行了一个嵌套命令. 例如, 如果你想传递一个命令的结果作为另外一个命令的参数, 那么你使用这个符号 . 在本例中, 嵌套命令是以秒为单位的当前时间秒数 .
\"some stuff\"
双引号把词组标记为命令的一个参数. \"$\"符号和方括号在双引号内仍被解释 .
{some stuff}
大括号也把词组标记为命令的一个参数. 但是, 其他符号在大括号内不被解释.
\\
反斜线符号(\\) 是用来引用特殊符号. 例如:\\n 代表换行. 反斜线符号也被用来关闭\"$\"符号 , 引号,方括号和大括号的特殊含义 .
一个小例子
下面是Tcl中打印当前时间的命令. 它使用了三条Tcl命令 : set, clock, 和 puts. set 命令给变量赋值. clock 命令生成时间值 . puts 命令打印结果.
set seconds [clock seconds]
puts \"The time is [clock format $seconds]\"
注意在给变量赋值时并未使用$符号. 只有在使用变量时才使用$符号.在上个例子中, seconds 变量并不是必须的. 你能使用一句命令打印出当前时间:
puts \"The time is [clock format [clock seconds]]\"
分组和替换
Tcl解析Tcl语法是通过以下三步: 参数分组, 结果替换和命令分派.
参数分组. Tcl需要决定怎样组织命令的参数 . 在最简单的情况中, 空格分隔了各参数 . 作为早期规定, 引号和括号使多个单词成为一个参数 . 在上个例子中 , 双引号使多个单词成为puts命令的一个参数.
结果替换. 在参数分组后 , Tcl执行字符串替换. Put命令中, 只是简单地用变量 $foo 的值替换了foo, 用结果替换了括号命令. 替换是在分组之 后 后进行的. 这种次序使特别的值并未使命令结构变复杂.
命令分派. 在结果替换后, Tcl使用命令名称作为关键字 ,查询分派表,调用相应的C程序,来执行命令. . 你也可以在Tcl中开发命令程序. 在参数传递和错误处理中有一些简单的约定.
另一个例子
下面是另一个例子:
set i 0
while {$i < 10} {
puts \"$i squared = [expr $i*$i]\"
incr i
}
这里, 大括号用来参数分组, 并没进行任何替换. Tcl语法解析知道 while 命令没有特别的地方,象对待其它命令一样. while 命令的执行程序知道第一个参数是表达式, 第一个参数是多个Tcl命令 . 大括号把它分成两个参数:逻辑表达式控制循环,命令在循环部分 .
我们看到了两个数学表达式: 逻辑比较和乘法计算. while命令自动计算第一个参数值. 在其它场合时,你要明确使用 expr 命令来执行数学计算.
命令分派
最后,Tcl调用程序执行复杂的工作. 我们可以看到Tcl 使用 expr 命令来执行数学运算, puts 命令来执行输出功能, set 命令来给变量赋值. 这些Tcl命令,是通过已在Tcl中注册的C语言程序来执行的. C语言程序调用Tcl命令传来的字符串参数, 然后传回结果字符串. 写C语言程序并不复杂, 而且可以做任何事情,包括访问数据库和建立图形界面. Tcl语言, 并不清楚命令会做什么 , 它只是进行参数分组, 结果替换和命令分派 .
最后一个例子
这是一个阶乘程序:
proc fac {x} {
if {$x < 0} {
error \"Invalid argument $x: must be a positive integer\"
} elseif {$x <= 1} {
return 1
} else {
return [expr $x * [fac [expr $x-1]]]
}
}
进一步阅读
<<使用Tcl 和 Tk 熟练编程>>第一章
E.J. Friedman的Tcl/Tk教材
发布人:netbull 来自:LinuxFocus.org
vi介绍编 (1) vi快速入门
(转载)不用Grub,不用lilo,只用Win98 Dos引导多个Linux系统的方法
GTK入门导读(List物件)
SuSe Linux 下安装 ADSL
proftpd 安装手记
中小型企业的Sendmail邮件服务器应用实例
在linux下架设自己的mudos服务
CVS使用简介
三、怎么做需求分析(上)
一个安全WEB服务器的安装
在Linux可加载内核模块中探秘(目录)
修改网卡mac地址的方法
远程攻击学习ABC—从SATAN开始的漏洞收集(下)
Unix下信号灯和共享内存的使用方法(之一)
UNIX CVS 服务器的漏洞
站点导航
Linux教程
Php
Linux
非技术类
指令大全
Shell
安装启动
Xwindow
Kde
Gnome
输入法类
美化汉化
网络配置
存储备份
杂项工具
编程技术
网络安全
内核技术
速度优化
Apache
Email
Ftp服务
Cvs服务
代理服务
Samba
域名服务
网络过滤
其他服务
Nfs
Oracle
Dhcp
Mysql
Ldap
RedHat
赞助商链接