TCL语言笔记:TCL基础语法
一、什么是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基础语法的更多相关文章
- Python:笔记(1)——基础语法
Python:笔记(1)——基础语法 我很抱歉有半年没有在博客园写过笔记了,客观因素有一些,但主观原因居多,再多的谴责和批判也都于事无补,我们能做的就是重振旗鼓,继续出发! ——写在Python之前 ...
- C#快速入门笔记(1)——基础语法
C#快速入门笔记(1)——基础语法 总体框架:
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
- Python学习的个人笔记(基础语法)
Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...
- python3笔记<一>基础语法
随着AI人工智能的兴起,网络安全的普及,不论是网络安全工程师还是AI人工智能工程师,都选择了Python.(所以本菜也来开始上手Python) Python作为当下流行的脚本语言,其能力不言而喻,跨平 ...
- Hive学习笔记:基础语法
Hive基础语法 1.创建表 – 用户表 CREATE [EXTERNAL外部表] TABLE [IF NOT EXISTS 是否存在] HUserInfo ( userid int comment ...
- TCL语言笔记:TCL中的数组
一.介绍 Tcl 中的数组和其他高级语言的数组有些不同:Tcl 数组元素的索引,或称键值,可以是任意的字符串,而且其本身没有所谓多维数组的概念.数组的存取速度要比列表有优势,数组在内部使用散列表来存储 ...
- TCL语言笔记:TCL中的控制结构命令
一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...
- TCL语言笔记:TCL中的数学函数
一.TCL数学函数列表 函数名 说明 举例 abs(arg) 取绝对值 set a –10 ; #a=-10 set a [expr abs($a)]; # a=10 acos(arg) 反余弦 s ...
随机推荐
- 另辟思路解决 Android 4.0.4 不能监听Home键的问题
问题描述: 自从Android 4.0以后,开发人员是不能监听和屏蔽Home键的,对于KEYCODE_HOME,官方给出的描述如下: Home key. This key is handled by ...
- Oracle 表的连接方式(1)-----Nested loop join和 Sort merge join
关系数据库技术的精髓就是通过关系表进行规范化的数据存储,并通过各种表连接技术和各种类型的索引技术来进行信息的检索和处理. 表的三种关联方式: nested loop:从A表抽一条记录,遍历B表查找匹配 ...
- Linq--扩展方法
如果现在有一个这样的需求,求筛选出来的大于20MB的进程的和,常用的方法是写一个静态方法传进去一个ProcessData列表 比如: public static Int64 TotalMemory( ...
- openerp经典收藏 深入理解对象(转载)
深入理解对象(转载) 原文地址:http://shine-it.net/index.php/topic,2159.0.htmlhttp://blog.sina.com.cn/s/blog_57ded9 ...
- #ifdef预编译相关用法
#ifdef预编译相关用法主要有:(1)#ifdef XXX executing the corresponding xxx code #endif(2)#ifdef XXX executing th ...
- VS2010打开VS2012解决方法
VS2012中对C#的支持度非常好,不管是编写方便程度(不需要插件就能高亮代码及代码自动提示功能),还对MFC的一些功能优化很多. 我们可以修改两个工程文件来把VS2012的工程文件一直到VS2010 ...
- SQLite数据库的加密【转】
1.创建空的SQLite数据库. //数据库名的后缀你可以直接指定,甚至没有后缀都可以 //方法一:创建一个空sqlite数据库,用IO的方式 FileStream fs = File.Create( ...
- Java 图形编程 二:布局管理器之边界布局
package second; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.Window ...
- Python之回调魔法
Python中魔法(前后又下划线)会在对象的生命周期被回调. 借助这种回调, 可以实现AOP或者拦截器的思想. 在Python语言中提供了类似于C++的运算符重在功能:一下为Python运算符重在调用 ...
- 进程和cpu绑定
#include<stdlib.h> #include<stdio.h> #include<sys/types.h> #include<sys/sysinfo ...