TCL基础知识

news/2024/10/30 9:31:20/

TCL基础知识

置换

TCL解释器运用规则把命令分成一个个独立的单词,同时进行必要的置换
TCL置换分为以下三类

变量置换 $
命令置换 []
反斜杠置换 \

用 $ 表示变量置换
TCL解释器会将认为 $后面为变量名,将变量置换成它的值
在这里插入图片描述
用[]表示命令置换
[]内是一个独立的TCL语句
在这里插入图片描述
用\表示反斜杠置换
换行符、空格、[、 $、等被TCL解释器当作特殊符号对待的字符,加上反斜杠后变成普通字符
在这里插入图片描述

用\t表示TAB
用\n表示换行符
在这里插入图片描述
""TCL解释器对双引号中$和[]符号会进行变量置换和命令置换
在这里插入图片描述
{}而在花括号中,所有特殊字符都将成为普通字符,TCL解释器不会对其作特殊处理
在这里插入图片描述
#表示注释
在这里插入图片描述

变量

变量就是某个容器的名称,可以储存一个值。变量的名称在程序运行期间保持不变,但是变量的值通常会不断改变。
定义:set 变量名 变量值
取值:$变量名
在这里插入图片描述
例题:假设我们想打印变量varible,后面跟一个“_1”,会发生什么呢?
在这里插入图片描述

数组

数组:TCL中数组可以储存很多值,通过元素名来进行检索。类似于某件事物(数组名)集中不同属性(元素名),每一种属性有其独立的值
定义:set 数组名(元素名)值
取值:$数组名(元素名)
在这里插入图片描述
使用array指令获取数组信息
在这里插入图片描述

列表

列表是标量的有序集合
定义set列表名{元素1 元素2 元素3 …}
取值$列表名
在这里插入图片描述
TCL中有一系列十分方便的列表操作命名
在这里插入图片描述
concat
语法格式:concat列表1 列表2
功能:将列表1 和列表2合并
在这里插入图片描述
llength
语法格式:llength列表
功能:返回列表中的元素个数
在这里插入图片描述
lindex
语法格式:lindex列表n
功能:返回列表中第n个元素(从0开始计数)
在这里插入图片描述
例题:如何得到列表list1{a b c d e f}的最后一个元素?
在这里插入图片描述
lappend
语法格式:lappend列表新元素
功能:列表末尾加入新元素
在这里插入图片描述
lsort
语法格式:lsort开光列表
功能:将列表按照一定规则排序
开关:缺省时默认按照ASCLL码进行排序
-real 按照浮点数值大小排序
-unique 唯一化,删除重复元素
在这里插入图片描述
例题:如何得到列表list1 { 0 1.2 -4 3 5}中的最小值
在这里插入图片描述

运算

数学运算
a + b
a - b
a * b
a / b
逻辑运算
a <= b
a >= b
a == b
a != b

expr
语法格式:expr运算表达式
功能:将运算表达式求值
在这里插入图片描述
如果想要进行浮点运算,只要将其中任意一个数值,写出浮点形式(有小数点)即可
在这里插入图片描述

控制流

if
语法格式:
if{判断条件}{
脚本语句
}elseif{判断条件}{
脚本语句
}else{
脚本语句
}
在这里插入图片描述

注意,上例中脚本语句的‘{’一定要写在上一行,因为如果不这样,TCL解释器会认为if命令在换行符处已结束,下一行会被当成新的命令,从而导致错位。

foreach
语法格式:foreach变量 列表 循环主体
功能:从第0个元素开始,每次按顺序取得列表的一个元素,将其赋值给变量,然后执行循环主体一次,直到列表最后一个元素。
在这里插入图片描述
在这里插入图片描述
break
语法格式:break
功能:结束整个循环过程
在这里插入图片描述
在这里插入图片描述
continue
语法格式:continue
功能:仅结束本次循环
在这里插入图片描述
在这里插入图片描述
while
语法格式:while判断语句 循环主体
功能:如果判断语句成立(返回值非0),就运行脚本,直到不满足判断条件停止循环,此时while命令中断并返回 一个空字符串
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
for
语法格式:for 参数初始化判断语句重新初始化参数循环主体
功能:如果判断语句返回值非0就进入循环,执行循环主体后,在重新初始化参数。然后再次进行判断,知道判断语句返回值为0,循环结束。
在这里插入图片描述
在这里插入图片描述

过程函数

proc
语法格式:proc函数名 参数列表 函数主体
功能:类似于C语言中的函数。即用户自定义的功能,方便多次调用
在这里插入图片描述
全局变量:在所有过程之外定义的变量
局部变量:对于在过程中定义的变量,因为它们只能在过程中被访问,并且当过程退出时会被自动删除。
指令global,可以在过程内部引用全部变量
在这里插入图片描述

正则匹配

定义:正则表达式是一种特殊的字符串模式,用来去匹配符号规则的字符串
正则表达式的\w,用来匹配一个字母、数字、下划线
正则表达式的\d,用来匹配一个数字
在这里插入图片描述
我们可以用代替重复的量词进行表示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
锚位:用来指示字符串当中的开头和结尾的位置,使我们能够匹配到正确的字符
在这里插入图片描述
在这里插入图片描述
regexp
语法格式:regexp?switches?exp string?matchVar? ?subMatchVar subMatchVar…?
功能:在字符串中使用正则表达式匹配
switches:
-nocase将字符串中的大写都当成小写看待
exp正则表达式
string用来进行匹配的字符串
matchstring表示用正则表达式匹配的所有字符串
sub1表示正则表达式中的第一个子表达式匹配的字符串
sub2表示正则表达式中的第二个子表达式匹配的字符串
例题:如何匹配字符串“abc456”
在这里插入图片描述
例题:如何匹配一个以数字开头并且以数字结尾的字符串?
在这里插入图片描述
捕获变量
通过()可以捕获字符串
例如如何将字符串“Snow is 30 years old”中的30捕获出来?
在这里插入图片描述

在这里插入图片描述

文本处理

open
语法格式:open文件打开方式(打开方式r表示读模式,w表示写模式)
功能:打开文件

gets
语法格式:gets fileld变量名
功能:gets读fileld标识的文件的下一行,并把该行赋给变量,并返回该行的字符数(文件尾返回-1)

close
语法格式:close fileid
功能:关闭文件
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


http://www.ppmy.cn/news/149522.html

相关文章

TCL使用

tcl常用的语法 1.## tcl脚本命令 tcl有效的命令是以命令字符串的形式。例如 set a 4&#xff1b; 2。置换命令 tcl中&#xff0c;有三种置换&#xff1a;变量置换&#xff0c;命令置换和反斜杠置换。 ##2.1变量置换 以$为标记&#xff0c;例如%set $xy;就是讲x的值与y相加。 #…

初识Tcl(五):Tcl 循环

目录 Tcl循环 循环控制语句 无限循环 Tcl while循环 语法 流程图 示例 Tcl for循环 语法 流程图 示例 Tcl嵌套循环 语法 示例 Tcl break语句 语法 流程图 示例 Tcl continue语句 语法 流程图 示例 Tcl循环 可能有一种情况&#xff0c;当需要执行一个代码…

十二、TCL脚本

文章目录 引言学习核心基础语法置换(substitution)变量置换命令置换反斜杠置换双引号和花括号 变量简单变量数组其它相关命令unsetappendincr表达式 list 控制流ifwhileforforeachswitch命令break/continuesourceeval 过程proc 命令局部变量和全局变量 字符串操作formantscanre…

Tcl -- upvar

1. upvar&#xff1a;类似于C语言中的引用传参&#xff08;别名&#xff09; 这里涉及到层级&#xff08;栈级&#xff09;的概念&#xff0c;upvar 2表示向上两级&#xff0c;默认值是1. 我们知道局部变量&#xff08;函数参数&#xff09;都是存在栈中的&#xff0c;这样做…

[TCL]Tcl语言基礎教程(一)

Tcl语言参考&#xff08;一&#xff09; Tcl("Tool Command Language"&#xff0c;即工具命令语言&#xff1b;Tcl念作“踢叩” "tickle" )是一种易学易用易于扩展的脚本语言,实际上包 含了两个部分&#xff1a;一个语言和一个库。 首先&#xff0c;Tcl是…

TCL语言

目录 引言概述其他 变量、数组和列表变量数组列表 控制流过程函数正则匹配文本处理 引言 TCL&#xff08;Tool Command Language&#xff09;脚本语言是对EDA兼容性最好的语言&#xff0c;非常适合做EDA流程控制。如下图所示&#xff1a; IC设计中另一种常用语言是Perl&#…

TCL: tcl小结

&#xfeff;&#xfeff; lindex - 从列表中获得一个元素 语法 lindex list ?index...? 描述 lindex命令接受一个参数列表 list&#xff0c;可以接受0个或者多个 index参数&#xff0c;在多个参数的情况下&#xff0c;参数可以是单独的一次排列&#xff0c;也可以是在…

智能晾衣架(一)--设计

本文素材来源于红河学院 工学院 作者&#xff1a;赵德森 张艺锦 潘志慧 曹紫康 指导老师&#xff1a;江洁 张龙超 一、简介 本作品设计的晾衣系统从人们日常生活研究设计&#xff0c;体积小&#xff0c;收纳方便&#xff0c;不占空间可以在日常生活中极大的便利用户。我们…