TCL基础知识入门(一)
TCL基础学习(一)
- TCL基础
- TCL 开发环境安装配置
- 认识
- 1. TCL
- 2. 命令语句
- 3. 变量赋值
- 4. 变量置换
- 5. 命令置换
- 6. 反斜线置换
- 7. “” 和{ }
- 8. 注释与续行
TCL基础
学习Tcl的笔记,一些基础概念。
TCL 开发环境安装配置
TCL工具是vivado 自带的 vivado TCL shell;
打开方式:vivado -> window -> tcl console vivado 出了名的难用,又改为vscode编辑了,使用Activestate开发工具
官网位置:https://www.activestate.com/products/tcl/
或者使用我已经下载好的win10安装包
链接:https://pan.baidu.com/s/1sP_692OIcgeHDa5oDsjOfw?pwd=aobo
提取码:aobo之后根据https://zhuanlan.zhihu.com/p/492866535这篇文章用vscode配置TCL开发环境
注:采用wish后vscode并不能成功运行,最后选用tclsh配置
vscode运行TCL效果
认识
1. TCL
TCL(tool command language) 是一种脚本语言,基于字符串的命令语言,解释性语言。(shell 一样)
1. 所有结构都是一条命令,包括语法结构
2. 所有数据类型都可视为字符串
(一切皆为字符串)
2. 命令语句
一条脚本由一个或几个单词构成,空格、Tab键隔开。 第一个单词为命令名,后面为参数。
命令可以换行或者**;**隔开, 分号会促使左侧命令不显示输出结果。
set x 5
5
set x 5 ; set y 6
6
set x 5 ; set y 6;
6
3. 变量赋值
变量赋值需要使用set 变量名 变量值
; C语言变量名有限制(字母、下划线),TCL没有任何限制,甚至可以是空格; 保持良好的代码风格,TCL区分大小写。
incr 变量名 (参数)
不加参数,执行第一个参数+1
的操作 ,有参数与第一个参数相加,初始化为0
, 第一个第二个参数都必须为整形。
set " " tcl
tcl
incr v # initial V = 0
1 # v + 1
incr v 2 # V + 2
3
incr v 1.5 # int
expected integer but got "1.5"
incr v
4
incr -2
1
incr v -2 # 4-2
2put $errorInfo
expected integer but got "1.5"(reading increment)invoked from within
"incr v 1.5"
命令分为两块: 解析 和 执行
解析: 将命令分解为一个个独立的单词, 进行必要的substitution置换。
执行: 将第一个单词作为命令,去查找是否有定义,将后续参数传递进去。
errorInfo : 错误信息存储在全局变量errorInfo 中
unset
命令与 set
命令功能相反, 取消变量定义并释放变量所占用的内存空间。
info exists
命令判断变量是否被定义,存在则返回1,未定义返回0。取消未定义变量会报错。
info
命令主要查看TCL解释器的相关信息。~ tclversion
返回解释器版本信息,~ hostname
返回主机名。
4. 变量置换
有点类似于C语言的指针。
- .
会被解释器当做字符串分隔符;_
则不会。 对于含有分割符的变量需要用{ }
解释器才当做一个整体。
set x 5
set y x # 将字符x赋给y,x是字符不是变量
set z $x # 将变量的值赋值给z set a-b-c hello
hello
set str $a-b-c
can't read "a": no such variable
set str ${a-b-c}
hello
set a_b 4
4
set y $a_b
4
set c $a_b${a-b-c}
4hello
set c ${a_b}_${a-b-c}
4_hello
set c ${a_b}7
47
set c $a_b7
can't read "a_b7": no such variable
append a_b $a_b
44
借助$
可以完成字符拼接,命令append
具有相同功能;
append + 变量名 + 新添加的字符串
;
嵌套置换$$a 不行 TCL在同一层次下遇到变量替换符只会置换一次;解释器从第一个$起开始算起到非法字符(字母、数字、下划线之外)为止为变量名
。
set a 5
=> 5put $$a
=> $5subst $$a
=> can't read "5": no such variablesubst $$var
=> 5
5. 命令置换
第二种置换形式:命令置换 [ ], [ ]中是另一条独立的Tcl命令(相当于命令嵌套), [ ]中可以有多条命令(使用空格或分号隔开)
# 较复杂置换
# 一
set var1 3.14
set var2 hello
set var3 -3
foreach num {1 2 3 } { puts "var$num = [set var$num]"
}=> var1 = 3.14
=> var2 = hello
=> var3 = -3#二
set area [ expr {$var3 * $var3}]
# expr 命令会在解析set时执行,expr结果是set第二个参数
puts "area : [expr {$var3 * $var3} ]"=> area : 9#命令置换的嵌套
# string length 返回字符串长度
set len [expr { [string length $var2] + [string length $var3]}]
puts "len : $len"=> len : 7
6. 反斜线置换
字符串中含有非法字符时[ 、空格、$、\
等时编译器会当做命令字符处理,导致报错。添加\
后可以被正确解释。
set str reg[x]
=> invalid command name "x"set str reg\[x]
puts $str
=> reg[x]
1. TCl 在解析一条命令时只进行一次解析、一轮置换。(一条命令不是一行, [ ] 里面是一条命令);
2. TCL每个字符只发生一层置换。
7. “” 和{ }
双引号和花括号内的字符被当做一个整体,包括特殊字符。
双引号内的置换命令可以正常使用
;
花括号内的置换会被阻止,但当作为if等语句的界限符时不会
。
8. 注释与续行
#
注释符必须位于命令的第一个字符,语句之后会报错。
注释语句中出现\
注释语句会换行,但\
后不能跟任何字符(包括空格)。
大段代码块注释:
# 第一种 if {0}
if {0} {} # 第二种 {}
set commented_out {XXXX}#第三种 proc过程
proc commented_out {} {
# proc 函数 后面没有参数输入,且后续脚本中没有被调用,从而达到注释目的}
TCL基础知识入门(一)相关推荐
- swift5.x基础知识入门
swift5.x基础知识入门 源码在我的主页下,欢迎下载,我非常喜欢swift和oc的语法,两者相似,我坚信天下没有学不会的技术. 基本介绍 ///这里只介绍一些初学swift的基本概念,需要提前了解 ...
- 学习笔记:Java 并发编程①_基础知识入门
若文章内容或图片失效,请留言反馈. 部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 视频链接:https://www.bilibili.com/video/av81461839 视频下载: ...
- GIS地图基础知识--入门教程
wenzhanhttp://www.gisbbs.net/viewthread.php?tid=106&extra=page%3D1 GIS地图基础知识--入门教程 GIS 地 图 知 识 1 ...
- C语言基础知识入门和C语言入门基础知识大全
一.C语言基础知识入门 C语言一出现,就以其丰富的功能.强大的表达能力.灵活性.方便性和广泛的应用,在世界范围内迅速普及和普及.C语言不仅高效而且可移植.它可以用来开发应用软件.驱动程序.操作系统等. ...
- JavaScript 基础知识 - 入门篇(二)
11. 函数 11.1 函数的基础知识 为什么会有函数? 在写代码的时候,有一些常用的代码需要书写很多次,如果直接复制粘贴的话,会造成大量的代码冗余: 函数可以封装一段重复的javascript代码, ...
- R语言基础知识入门学习(一)
目录 系列文章目录 一.软件下载 二.基本知识 1. 对象 2. 向量 3. 向量化 4. 因子 总结 系列文章目录 R语言基础知识入门学习(一) 一.软件下载 我们可以通过这个网址对R语言软件进行下 ...
- 网络安全基础知识入门!网络安全学习教程
当我们学习网络安全的时候,需要对它的基础知识做一个简单的了解,这样对以后的学习和工作都会有很大的帮助.本篇文章为大家总结了网络安全基础知识入门的内容,快跟着小编来学习吧. 计算机网络 计算机网络是利用 ...
- 计算机网络建设中涉及到哪些硬件,网络基础知识入门
网络基础知识入门 导语:随着计算机的广泛应用和网络的流行,我们应该要知道一些网络基础知识,下面是小编收集整理的网络基础入门知识,欢迎参考! 计算机网络是什么 这是首先必须解决的一个问题,绝对是核心概念 ...
- Python基础知识入门(二)
Python基础知识入门(一) Python基础知识入门(三) Python基础知识入门(四) Python基础知识入门(五) 一.数字类型 Python 数字数据类型用于存储数值.数据类型是不允许改 ...
最新文章
- spring boot2 修改默认json解析器Jackson为fastjson
- CF#1288A Deadline (函数求最值问题)
- C#类类型“.NET技术”
- 蓝桥杯基础模块8_1:串口通信收发
- 论文阅读 - Group Normalization
- ruby 新建对象_Ruby中的面向对象编程
- 深度学习笔记(6) 实践层面(一)
- python中定义字典数据类型使用什么符号_python数据类型之字典类型-dict
- cover 在html中的作用,Cover
- less文件转换为css文件
- 在window是下安装hadoop过程
- 将mysql数据库批量导出为word三线表格形式
- Hello World · GitHub 指南
- word选择粘贴没有html格式,Word选择性粘贴怎么用?Word设置无格式文本粘贴快捷键的方法...
- 我爱淘二次冲刺阶段4
- [KALI系列第四章]进行ARP断网攻击,包含安装方法
- 最全的PHP开发Android应用程序
- 力扣编程题-解法汇总
- 【自动驾驶】Frenet坐标系与Cartesian坐标系(二)
- 静下心来看一看花花世界花花人.