Tcl语言快速学习
创始人
2025-05-30 14:51:06

碎碎念:好久没更新博客了,近来工作需要用到candece家的工具,以及Y家等EDA工具,都是需要读入tcl的配置文件,这里打算爆肝五个小时,学会Tcl语言,以后能在工作终游刃有余。这里会参考一些其他人的博客,本文会在相应的位置列出来。加油OvO

Tcl语言是什么

tcl语言是一种可以在linux以及windows下执行的语言,是一种解释执行的脚本语言(Scripting Language)。它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。

1.语法

这里的tcl的脚本可以包含一个或者多个命令,命令之间必须采用换行符,或者分号分开,TCL的每个命令包含一个或者多个单词,一个单词就是一个命令,单词之间必须采用空格或者TAB隔开,windows中,我使用的是wish这个软件进行联手,linux与windows是一样的。
在这里插入图片描述

2 变量置换

在这里插入图片描述

3.命令置换

命令置换采用【】的形式
在这里插入图片描述

4. 反斜杠置换

在这里插入图片描述
这里的\类似和C语言一样,将空格保存了,否则,程序任务空格就是空格

注意:除了\以外,“”和{}夜同样被认为为置换符号,将特殊的字符当作普通的字符,TCL解释器对双引号中的各种分隔符将不作处理,但是对**换行符及$和[]**两种置换符会照常处理。
在这里插入图片描述

变量

TCL提供两种变量,其中包括简单变量和数组

简单变量

名字和值,都可以是任意的字符串
TCL解释器在分析一个变量置换时,只把从$符号往后直到第一个不是字母、数字或下划线的字符之间的单词符号作为要被置换的变量的名字。
在这里插入图片描述

生成变量,读取,修改变量

在这里插入图片描述

数组

数组:赋值方式:
set num(a )

array set {a 1 b 2 }

记住这里一定要使用空格
puts 输出
parray 命名
在这里插入图片描述

相关命令

  • unset :从解释器删除变量,他的后面可以有多个参数,每个参数可以是变量名,也可以是简单变量,可以是数字或者数组元素
  • append :命令将文本添加到一个变量的后面
  • incr :命令把一个变量加上一个整数,incr原来必须是整数
    在这里插入图片描述

表达式

tcl支持常用的数学函数,表达式终得数学函数写法类似与c\c++,多个参数采用,隔开
在这里插入图片描述

回顾

为了更加清楚规则这里通过代码的方式进行回顾

(bin) 1 % # 这里对上面的学习进行复习
(bin) 2 % # 置换
(bin) 3 % set a 1
1
(bin) 4 % set a 1; b 2
ambiguous command name "b": bell binary bind bindtags break button
(bin) 5 % set a 1; set b 2
2
(bin) 6 % set c a+10
a+10
(bin) 7 % set y $a+10
1+10
(bin) 8 % # 变量值换
(bin) 9 % set c [expr $x+100]
can't read "x": no such variable
(bin) 10 % set c [expr $a+100]
101
(bin) 11 % # 置换
(bin) 12 % set msg multiple space
wrong # args: should be "set varName ?newValue?"
(bin) 13 % set msg multiple\ space
multiple space
(bin) 14 % set msg1 "multiple space"
multiple space
(bin) 15 % set msg2 {mulplace space}
mulplace space
(bin) 16 % set msg3 "$a space"
1 space
(bin) 17 %

变量

(bin) 17 % set a 2
2
(bin) 18 % set a.1 3
3
(bin) 19 % set b ${a.1}

数组

•数组是一些元素的集合。TCL数组和普通计算机语言中的数组有很大的区别。在TCL中,不能单独声明一个数组,数组只能和数组元素一起声明。数组中,数组元素的名字包含两部分:数组名和数组中元素的名字,TCL中数组元素的名字(下标)可以为任何字符串。

set day(monday) 1;
set day(tuesday) 2;

• 第一个命令生成一个名为 day 的数组 , 同时在数组中生成 一个名为monday的数组元素,并把值置为1,第二个命令生成一个名为tuesday的数组元素,并把值置为2。

相关命令

• unset这个命令从解释器中删除变量,它后面可以有任意多个参数,每个参数是一个变量名,可以是简单变量,也可以数组或数组元素。

unset a b day(monday)
• append命令把文本加到一个变量的后面

set txt hello; #hello
append txt"! How are you"; #hello! How are you
• incr命令把一个变量值加上一个整数。incr要求变量原来的值和新加的值都必须是整数。

set b 2; incr b 3; #结果为5

相关内容

热门资讯

【实验报告】实验一 图像的... 实验目的熟悉Matlab图像运算的基础——矩阵运算;熟悉图像矩阵的显示方法࿰...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
大模型落地比趋势更重要,NLP... 全球很多人都开始相信,以ChatGPT为代表的大模型,将带来一场NLP领...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
kuernetes 资源对象分... 文章目录1. pod 状态1.1 容器启动错误类型1.2 ImagePullBackOff 错误1....
STM32实战项目-数码管 程序实现功能: 1、上电后,数码管间隔50ms计数; 2、...
TM1638和TM1639差异... TM1638和TM1639差异说明 ✨本文不涉及具体的单片机代码驱动内容,值针对芯...
Qt+MySql开发笔记:Qt... 若该文为原创文章,转载请注明原文出处 本文章博客地址:https://h...
Java内存模型中的happe... 第29讲 | Java内存模型中的happen-before是什么? Java 语言...
《扬帆优配》算力概念股大爆发,... 3月22日,9股封单金额超亿元,工业富联、鸿博股份、鹏鼎控股分别为3.0...
CF1763D Valid B... CF1763D Valid Bitonic Permutations 题目大意 拱形排列࿰...
SQL语法 DDL、DML、D... 文章目录1 SQL通用语法2 SQL分类3 DDL 数据定义语言3.1 数据库操作3.2 表操作3....
文心一言 VS ChatGPT... 3月16号,百度正式发布了『文心一言』,这是国内公司第一次发布类Chat...
CentOS8提高篇5:磁盘分...        首先需要在虚拟机中模拟添加一块新的硬盘设备,然后进行分区、格式化、挂载等...
Linux防火墙——SNAT、... 目录 NAT 一、SNAT策略及作用 1、概述 SNAT应用环境 SNAT原理 SNAT转换前提条...
部署+使用集群的算力跑CPU密... 我先在开头做一个总结,表达我最终要做的事情和最终环境是如何的,然后我会一...
Uploadifive 批量文... Uploadifive 批量文件上传_uploadifive 多个上传按钮_asing1elife的...
C++入门语法基础 文章目录:1. 什么是C++2. 命名空间2.1 域的概念2.2 命名...
2023年全国DAMA-CDG... DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义...
php实现助记词转TRX,ET... TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的...
【分割数据集操作集锦】毕设记录 1. 按要求将CSV文件转成json文件 有时候一些网络模型的源码会有data.json这样的文件里...
Postman接口测试之断言 如果你看文字部分还是不太理解的话,可以看看这个视频,详细介绍postma...
前端学习第三阶段-第4章 jQ... 4-1 jQuery介绍及常用API导读 01-jQuery入门导读 02-JavaScri...
4、linux初级——Linu... 目录 一、用CRT连接开发板 1、安装CRT调试工具 2、连接开发板 3、开机后ctrl+c...
Urban Radiance ... Urban Radiance Fields:城市辐射场 摘要:这项工作的目标是根据扫描...
天干地支(Java) 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:...
SpringBoot雪花ID长... Long类型精度丢失 最近项目中使用雪花ID作为主键,雪花ID是19位Long类型数...
对JSP文件的理解 JSP是java程序。(JSP本质还是一个Servlet) JSP是&#...
【03173】2021年4月高... 一、单向填空题1、大量应用软件开发工具,开始于A、20世纪70年代B、20世纪 80年...
LeetCode5.最长回文子... 目录题目链接题目分析解题思路暴力中心向两边拓展搜索 题目链接 链接 题目分析 简单来说࿰...