物探论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1570|回复: 2

TCL——Tool Command Language

[复制链接]
发表于 2014-2-16 19:14:02 | 显示全部楼层 |阅读模式
Tcl编程简介(一)关键词tcl                                                                                              Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command                         language的缩写,发音为 "tickle”, 实际上包含了两个部分:一个语言和一个库。                            首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一                         些互交程序如文本编辑器、调试器和shell。它有一个简单的语法                         和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。
  其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的                         过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。                         但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。
  下面简单介绍以下txl的语法规则:
解释器
  在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个                          Tcl命令是                         在特定的Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。Tcl_Interp是一个轻量级的结构,可以快速的新建和删除。
数据类型
  Tcl只支持一种数据结构:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。                         这是它比较有特点的方面字符串有三种形式:命令(command),                          表达式(expresion)和表(list)。
Basic Command Syntax 基本语法
  Tcl有类似于shell和lisp的语法,当然也有许多的不同。一                         条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个域(field)的集合,域使用空白分开的,第一个域是一个命令的名字,其它的是作为参数来传给它。
  例如:
  set a 22 //相当于C中的 a=22 a是一个变量这条命令分为三个域:1: set 2: a                         3: 22 set使用于设置变量的值的命令,a、20                          作为参数来传给它,a使它要操作的变量名,22是要付给的a值。
  Tcl的命令名可以是内置的命令也可以是用户建的新命令,如果是用户用户建的新命令应用程序中用函数Tcl_CreateCommand来创建。所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。命令的名字必须被打全,但                          Tcl解释器找不到一同名的命令时会用 unknown命令来代替。
  在很多场合下,unknown                          会在库目录中搜寻,找到一个的话,会自动生成一个Tcl命令并调用它。unknown经常完成缩略的命令名的执行。但最好不要使用。
注释
  和shell很象,第一个字母是"#"的Tcl字符串是注释。
其他细节规则
  Grouping arguments with double-quotes                          用双引号来集群参数,目的在于使用有空白的参数。
  例如:
set a "this string contains whitespace"
  如够一个参数一双引号来开始,该参数会一直到下一个双引号才结束。其中可以有换行符和分号。
  Variable substitution with $                          用美元符进行变量替换说白了就是引用该变量。
  如:
set a hello set b $a // b = "hello" 实际上传给set命令的参数 //是b,"hello" set c a // b = "a"
  Command substitution with brackets 命令子替换(用方括号)
  例如:
set a [set b "hello"]
  实现执行 set b "hello" 并用其结果来替换源命令 中的方括号部分,产生一条新命令
  set a "hello" //"hello" 为 set b "hello" 的返回值
  最终的结果是b="hello" a="hello"
  当命令的一个子域以方括号开始以方括号结束,表示要进行一个命令子替换。并执行该子命令,用其结果来替换原命令中的方括号部分。方括号中的部分都被视为Tcl命令。
  如下一个复杂一点的例子:
set a xyz[set b "abc"].[set c "def"] //return xyzabcdef
  Backslash substitution 转移符替换
  转移符时间不可打印字符或由它数意义的字符插入进来。这一概念与C语言中的一样。
 Backspace (0x8). f Form feed (0xc).  Newline (0xa).  Carriage-return (0xd).  Tab (0x9). v Vertical tab (0xb). { Left brace (`{"). } Right brace (`}"). [ Open bracket (`["). ] Close bracket (`]"). $ Dollar sign (`$"). sp Space (` "): does not terminate argument. ; Semicolon: does not terminate command. " Double-quote.
  Grouping arguments with braces 用花扩括号来集群参数
  用花扩括号来集群参数与用双引号来集群参数的区别在于:用花扩括号来集群参数其中的三种上述的子替换不被执行。而且可以嵌套。
  例如:
set a {xyz a {b c d}}//set收到俩个参数 a "xyz a {b c d}" eval { set a 22 set b 33 }//eval收到一个参数 "set a 22set b 33"
命令综述
  1.一个命令就是一个字符串(string)。
  2.命令是用换行符或分号来分隔的。
  3.一个命令由许多的域组成。第一个于是命令名,其它的域作为参数来传递。
  4.域通常是有空白(Tab横向制表健 Space空格)来分开的。
  5.双引号可以使一个参数包括换行符或分号。三种子替换仍然发生。
  6.花括号类似于双引号,只是不进行三总体换。
  7.系统只进行一层子替换,机制替换的结果不会再去做子替换。而且子替换可以在任何一个域进行。
  8.如果第一个非控字符是`#", 这一行的所有东西都是注释。
表达式
  对字符串的一种解释是表达式。几个命令将其参数按表达式处理,如:expr、for 和                          if,并调用Tcl表达式处理器(Tcl_ExprLong,                         Tcl_ExprBoolean等)来处理它们。其中的运算符与C语言的很相似。
!
  逻辑非
* / % + - << >>
  左移 右移 只能用于整数。
< > <= >= == !=
  逻辑比较
& ^ |
  位运算 和 异或 或
&&'  '
  逻辑"和" "或"
x ? y : z
  If-then-else 与C的一样
  Tcl 中的逻辑真为1,逻辑假为0。
  一些例子:
5 / 4.0 5 / ( [string length "abcd"] + 0.0 )
  计算字符串的长度 转化为浮点数来计算
"0x03" > "2" "0y" < "0x12"
  都返回 1
set a 1 expr $a+2 expr 1+2
1.png
1.jpg
1.jpg
1.jpg

切割式横缝碾压混凝土重力坝抗震安全性研究.pdf

368.23 KB, 下载次数: 0

排土场高边坡爆破震动观测与分析.pdf

161.72 KB, 下载次数: 7

厦门东通道海底隧道涌水量分析及预测.pdf

154.77 KB, 下载次数: 4

关于GPS控制网WGS84平差坐标向地方独立坐标系的转换.pdf

121.39 KB, 下载次数: 7

胶东乳山金矿蚀变岩中绢云母.pdf

487.34 KB, 下载次数: 0

碳酸盐成岩环境的特征.rar

552.83 KB, 下载次数: 0

MLS2D.zip

5.41 KB, 下载次数: 4

polarmap.zip

2.67 KB, 下载次数: 0

shadedErrorBar.m

4.8 KB, 下载次数: 3

作物植被覆盖度的高光谱遥感估算模型.zip

594.77 KB, 下载次数: 0

中祁连山东段皋兰岩群地质时代的微古植物新证据.pdf

498.7 KB, 下载次数: 0

Seminars.zip

305.5 KB, 下载次数: 0

因子分析和聚类分析实例解译.rar

186.51 KB, 下载次数: 0

南海西部中建南盆地新生代沉积相及古地理演化.rar

191.78 KB, 下载次数: 0

坐标校正的mapgis操作步骤-好.rar

218.74 KB, 下载次数: 6

危机矿山与矿田构造.rar

8.72 KB, 下载次数: 0

201004_北京54坐标向西安80坐标转换的方法.rar

280.31 KB, 下载次数: 15

2001年11月14日昆仑山库赛湖地震(Ms8[1].1)地表破裂带的基本特征.pdf

499.69 KB, 下载次数: 0

ArcIMS课程讲义.rar

203.54 KB, 下载次数: 5

GB 17501-1998 海洋工程地形测量规范.rar

1.4 MB, 下载次数: 0

合成孔径雷达图像的近岸海面风场反演.pdf

153.44 KB, 下载次数: 0

综合物探在罗布泊地下水勘查中的应用.pdf

227.32 KB, 下载次数: 6

JYarus_QuantitativeUseofSeismicAttr.pdf

421.68 KB, 下载次数: 0

JYarus_QuantitativeUseofSeismicAttr.pdf

421.68 KB, 下载次数: 0

回复

使用道具 举报

发表于 2014-3-9 11:24:50 | 显示全部楼层
很好的资料 学习学习啊
回复 支持 反对

使用道具 举报

发表于 2014-3-14 07:37:54 | 显示全部楼层
下载学习学习,谢谢了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|物探论坛 ( 鄂ICP备12002012号 微信号:iwutan )

GMT+8, 2024-4-26 03:25 , Processed in 0.085133 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表