一、什么是TCL

Tcl 全称是 Tool command Language。它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握。

Tcl 语言是一个解释性语言,所谓解释性是指不象其他高级语言需要通过编译和联结,它象其他 shell 语言一样,直接对每条语句顺次解释执行。

Tcl 数据类型简单。对 Tcl 来说,它要处理的数据只有一种——字符串。Tcl 将变量值以字符串的形式进行存储,不关心它的实际使用类型。

二、TCL的基本语法

1.输出:tcl使用”puts"关键字来作为输出语句

[语法] : puts ?-nonewline? ?channelId? string 

Tcl 的输出命令是“puts”,将字符串输出到标准输出 channelId。语法中两个问号之间的参数为可选参数。

puts hello
结果=> hello puts –nonewline "hello hello"
结果=>hello hello

但如果输出一段有空格的文本,则要用双引号或者花括号括起来

-nonewline 选项告诉 puts 不输出回车换行。

注意:双引号和花括号的作用是将多个词组织成一个变元,但他们是有差别的!这种差别就是在处理“替换操作”时,前者允许替换发生,而后者则可能会阻止替换。关于两者用法与差别以后会陆续讲到。在这里两者作用相同。

2.赋值: tcl 使用“set”关键字来定义参数,不必指定变量值的类型,因为变量值的类型仅一种——字符串。为变量赋值时,会为变量开辟一段内存空间来存储变量值。

[语法] set varName [value]  

set a Hello        ;#定义变量 a 并赋值
=>Hello
puts $a ;#输出变量值
=>Hello
set a “Hello world” ;#重新赋值
=>Hello world
set a “Hello world”
=> Test Tcl ;#输出变量值,此时不加”$” puts $a
=>Hello world ;#输出变量值,此时要加”$” puts a
=> a ;#输出字符”a” set b $a
=>Hello world puts $b
=>Hello world ;#将 a 的值赋给 b

3.替换

(1):$

“$”符实现引用替换,用以引用参数值。上面也用到过

Tcl 对替换只进行一遍解释,对嵌套的”$”不于理睬。

set foo  oo
=>oo
set dollar foo
=>foo
set x $$dollar
=>$foo ;#只解释一次,将“$dollar”用 dollar 的值(foo)代替, ;#命令等效为 set x {$foo},大括阻止替换。
set x {$foo}
=>$foo
set y $x
=>$foo ; #一轮替换

(2) :[]

方括号“[]”完成命令替换。用“[]”将一条命令括起来,命令执行完成后,返回结果。

set b [set a   5]                  ;#set a 5 命令输出的结果赋给 b
=>5 puts $b
=>5 set c [expr 5 * 10] ;#将乘式结果赋给 c
=>50

(3): " " 和{}

双引号和花括号将多个单词组织成一个参数,也是一种替换操作。””和{}内的替换如何进行

呢?一般的原则是在" "内的替换正常进行,而在{}内的替换有可能会被阻止。

set a 123
=>123 puts "$a" #会替换
=>123 puts {$a} #不会替换
=>$a

三、总结

TCL语言的执行顺序是:先分组,再替换,最后执行

花括号中不准替换
双引号和花括号的作用都是分组,但是不同之处在于是否支持替换
语句的运行分3步走:
1、首先分组
2、其次替换
3、最后运行

$的作用是变量引导符,在字符串中如果要替换某个变量,可能还需要用{}来界定变量的起始和终点
分组有三种方法:空格,双引号和花括号
另外转义符\在这里的作用是提升或者消除字符的能力

TCL语言笔记:TCL基础语法的更多相关文章

  1. Python:笔记(1)——基础语法

    Python:笔记(1)——基础语法 我很抱歉有半年没有在博客园写过笔记了,客观因素有一些,但主观原因居多,再多的谴责和批判也都于事无补,我们能做的就是重振旗鼓,继续出发! ——写在Python之前 ...

  2. C#快速入门笔记(1)——基础语法

    C#快速入门笔记(1)——基础语法 总体框架:

  3. Java学习笔记之---基础语法

    Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...

  4. Python学习的个人笔记(基础语法)

    Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...

  5. python3笔记<一>基础语法

    随着AI人工智能的兴起,网络安全的普及,不论是网络安全工程师还是AI人工智能工程师,都选择了Python.(所以本菜也来开始上手Python) Python作为当下流行的脚本语言,其能力不言而喻,跨平 ...

  6. Hive学习笔记:基础语法

    Hive基础语法 1.创建表 – 用户表 CREATE [EXTERNAL外部表] TABLE [IF NOT EXISTS 是否存在] HUserInfo ( userid int comment ...

  7. TCL语言笔记:TCL中的数组

    一.介绍 Tcl 中的数组和其他高级语言的数组有些不同:Tcl 数组元素的索引,或称键值,可以是任意的字符串,而且其本身没有所谓多维数组的概念.数组的存取速度要比列表有优势,数组在内部使用散列表来存储 ...

  8. TCL语言笔记:TCL中的控制结构命令

    一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...

  9. TCL语言笔记:TCL中的数学函数

    一.TCL数学函数列表 函数名 说明 举例 abs(arg) 取绝对值 set a –10  ; #a=-10 set a [expr abs($a)]; # a=10 acos(arg) 反余弦 s ...

随机推荐

  1. PHP流程控制语句

    流程控制语句分为两种(自己学到的就有俩不过在网上看还有两种) 1:条件控制语句即(if, if else , elseif , switch case) if语句不多说了,基本上大家都知道.if el ...

  2. 卸载CentOS 5.4自带的OpenJDK,配置新的Java环境

    本文CentOS版本为5.4 final,使用图形界面与命令结合的操作方式,由于CentOS 5.4在默认情况下,会安装OpenOffice之类的软件,而这些软件需要Java支持,因此系统会默认安装一 ...

  3. jquery 在ie10中post数据,最终数据丢失的BUG修复

    最近在做项目的时候,发现ie10或者360之类套壳的浏览器(ie10) 在jquery调用post数据的时候,真实的请求并没有上传数据,原因不表,请见 http://stackoverflow.com ...

  4. Jquery LigerUI框架学习(二)之Tree于Tab标签实现iframe功能

    LigerUI框架Tree于Tab标签动态使用,当点击Tree后动态创建Tab标签,和通常用的iframe框架功能类似 Tree中的关键代码 //Tree初始化 $("#tree1" ...

  5. android----sqlite中的 query() 参数分析

    public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, Strin ...

  6. 进程和cpu绑定

    #include<stdlib.h> #include<stdio.h> #include<sys/types.h> #include<sys/sysinfo ...

  7. zip压缩包密码破解

    有一种破解方法叫做Known plaintext attack.市面上的密码破解软件几乎都带有这个功能.操作方法就是找到加密压缩包中的任意一个文件,用同样的压缩软件同样的压缩方式压缩成一个不加密的包, ...

  8. C#中使用SelectionStart属性指定输入框光标位置

    今天工作中遇到一个小BUG需要修改,需求为在文本框输入的过程中,如果数字是以0开头则自动消除0 如输入012,则显示12 很容易想到在textbox的text changed事件中判断,如果text是 ...

  9. C# ASP.NET系统缓存全解析

    原文:http://blog.csdn.net/wyxhd2008/article/details/8076105 目录(?)[-] 系统缓存的概述 页面输出缓存 页面局部缓存 文件缓存依赖 数据库缓 ...

  10. 原生JS实现苹果菜单

    今天分享下用原生JS实现苹果菜单效果,这个效果的重点有以下几点 图标中心点到鼠标的距离的算法 利用比例计算图标的宽度 代码地址:https://github.com/peng666/blogs/blo ...