TCL之基本语法1
TCL之基本语法1
1:set and puts
set就是变量声明,这个声明在需要使用的指令下会自动执行,不会出现没有声明的错误。但是对于puts这类定向访问的是不能没有声明的。这里简单理解TCL中的变量:以字符串的形式存在,具体的值由$符号访问。访问之前必须已经有声明。
set x 0
puts $x
puts x
两个puts都是可以显示结果的,掐前一个是值,后一个是字符。
2:expr and []
TCL中的指令长度是确定的,由关键字决定。每个参数使用空格区分。如果需要将指令内的某个参数嵌套其他指令,则需要使用[]来确认嵌套指令的范围。expr是取算数计算的结果的指令,参数就是算数表达式。
set x 0
set x [expr $x+1]
puts $x
最后的结果是1,第二句语句就是将x加1.
3:list and {}
前面介绍如何嵌入指令,同样含有空格的字符串也是需要嵌入的(某些参数需要带有空格及特殊字符的字符串作为参数)。使用{}可以将内部的内容转化为特殊字符串变量,在TCL中为list型变量。list作为参数时,内部的符号都是由对应指令控制的,而不是按照指令解释。这里有许多对list操作的指令,以后有时间详细分析。
set x {1 2 3 {1 2} 2 {4 5}}
puts $x
x的值就是后面的一串list型变量
4:if and elseif
TCL中的条件判断语句。
if { $x==0 } {
set x 1
puts $x
} elseif { $x==1 } {
set x 2
puts $x
} elseif { $x==2 } {
set x 3
puts $x
} elseif { $x<11 } {
set x [expr $x+1]
puts $x
具体的形式和C语言相似,注意参数只有两个,每个都用{}声明,且参数间使用空格区分。
5:while and for
TCL中的循环语句,参数位置和C语言相似,声明按照TCL语法即可。
while { $x<10 } {
if { $x==0 } {
set x 1
puts $x
} elseif { $x==1 } {
set x 2
puts $x
} elseif { $x==2 } {
set x 3
puts $x
} elseif { $x<11 } {
set x [expr $x+1]
puts $x
}
}
for {
set i 0
} {
$i<10
} {
incr i 1
} {
puts i=$i
}
while两个参数,第一个循环条件,第二个执行体。for有四个参数,第一个初始执行体(开始前执行一次),第二个循环条件,第三个条件执行体,第四个循环执行体。每个参数按照C语言中的for可以完全对应。
6:foreach
list循环结构,这是比较特殊的循环。其判断条件是list型变量的长度及读取尺度,执行体和for是一样的。第一个参数是读取长度及缓存变量,第二个是待读取的list型变量。第三个是执行体。
set b " "
set a {10 100 2300 {1} }
foreach i $a {
set b [linsert $b 0 $i]
puts $i
puts $b
} set x {}
foreach {i j} {a b c d e f} {
lappend x $j $i
puts x=$x
}
第一个foreach中,读取长度是1(i只有一个字符),缓存变量是i,待读取的list(可以直接写,也可以是已经存在的,已存的需要加$读取符),执行的就是最后的参数的内容。linsert是字符插入指令,这里暂时不解释。
第二个就是将长度换成2,缓存变量变成i和j,其他的是一样的。
7:eval and source
eval是命令解读指令。source是调用外部文件的指令。
#!/bin/sh
# eval_source.tcl \
exec tclsh "$0" ${1+"$@"}
eval set b 2 ;set b 4
puts $b set cmd "puts \"I love you \""
eval $cmd source D:/Library/TCL_design/T1_workspace/A3_string.tcl
这里cmd声明为字符串(真正的和C语言中一样的字符串,注意转义字符\的使用),可以将命令转化为字符串,由eval解释执行。这里可以使用其他系统命令。source就是直接调用外部可执行的文件。
TCL之基本语法1的更多相关文章
- Tcl学习之--语法|变量
[语法|变量] l 脚本.命令和单词 Tcl提供了大约100条命令.Tk提供了另外几十条,脚本包括一条或多条,通过换行符或分号分隔开. set a 12 set b 23 也能够写成一行: set a ...
- [NS2]TCL语言基本语法
(来自:<NS2仿真实验-多媒体和无线网络通信>) 1. 变量(Variable)和变量替换(Variable Substitution) tcl变量是在第一次使用set的指令来指派变量的 ...
- tcl之基本语法—3
- tcl之基本语法—2
- tcl之基本语法—1
- TCL语言笔记:TCL基础语法
一.什么是TCL Tcl 全称是 Tool command Language.它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握. Tcl 语言是一个解释性语言,所谓解释性是指不象其 ...
- Tcl与Design Compiler (二)——DC综合与Tcl语法结构概述
1.逻辑综合的概述 synthesis = translation + logic optimization + gate mapping . DC工作流程主要分为这三步 Translation : ...
- Tcl介绍和基础语法
Tcl的背景 Tcl(读作tickle)诞生于80年代的加州大学伯克利分校,作为一种简单高效可移植性好的脚本语言,目前已经广泛应用在几乎所有的EDA工具中.Tcl 的最大特点就是其语法格式极其简单,采 ...
- DC综合与Tcl语法结构概述
转载:https://www.cnblogs.com/IClearner/p/6617207.html 1.逻辑综合的概述 synthesis = translation + logic optimi ...
- TCL语言笔记:TCL中的控制结构命令
一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...
随机推荐
- 惠普CP1025 因转印离合器导致打印不全大片空白的问题
问题症状 自检只打印出一部分, 后面大部分都是空白. 如果是碳盒缺粉, 应该是均匀地浅或者空白, 如果是成像鼓的问题, 应该是从上到下成条状的不均匀, 这样显示一节后空白的情况是没见过, 上网查有类似 ...
- 服务端渲染SSR的理解
服务端渲染SSR的理解 SSR服务端渲染Server Side Render就是当进行请求时,页面上的内容是通过服务端渲染生成的,浏览器直接显示服务端返回的HTML即可. 客户端渲染CSR 通常在构建 ...
- Swoole从入门到入土(18)——WebSocket服务器[心跳ping]
由于 WebSocket 是长连接,如果一定时间内没有通讯,连接可能会断开.这时候需要心跳机制,WebSocket 协议包含了 Ping 和 Pong 两个帧,可以定时发送 Ping 帧来保持长连接. ...
- java打印杨辉三角
package com.dylan.practice.interview; /** * 打印杨辉三角 * * 原理 * 1.每个数等于它上方两数之和 * 2.第n行的数字有n个 * * @author ...
- OpenAI 的视频生成大模型Sora的核心技术详解(一):Diffusion模型原理和代码详解
标题党一下,顺便蹭一下 OpenAI Sora大模型的热点,主要也是回顾一下扩散模型的原理. 1. 简单理解扩散模型 简单理解,扩散模型如下图所示可以分成两部分,一个是 forward,另一个是 re ...
- 之前练手使用基于gin的go web项目
目录结构: `-- demo |-- cmd | |-- api.go | `-- root.go |-- common | `-- consts | `-- consts.go |-- config ...
- 迁移mm_wiki数据实践记录
写在前面 虽然我的随笔大部分都是记录在静态博客站点和博客园平台的,但是有一些临时的想法还是使用了wiki来记录. 经过多次试用和对比之后,最终选择了mm-wiki来作为自托管的wiki系统. mm-w ...
- 图书管理系统---基于form组件和modelform改造添加和编辑
添加 基于form组件改造 步骤1 1.为了区分自己写的form类和视图逻辑,所以工作中需要区分开来,那么就可以在应用下创建一个叫utils的文件夹,专门存放我们写的form类,py文件名随便起 2. ...
- linux下安装nginx(yum源安装)
备份yum源 cd /etc/yum.repos.d mkdir repo_bak mv *.repo repo_bak/ 下载阿里云repo文件 wget -O /etc/yum.repos.d/C ...
- 框架和MVC架构
网络框架及MVC架构 网络框架 所谓网络框架是指这样的一组Python包,它能够使开发者专注于网站应用业务逻辑的开发,而无须处理网络应用底层的协议.线程.进程等方面.这样能大大提高开发者的工作效率,同 ...