前言
TCL(Tool Command Language)命令的格式是
命令+字符串,第一个是命令,后面都是字符串,tcl的解释器(逐行执行)会根据命令去对后面的字符串进行相关操作。
注释符号:#
一、安装
启动tcl命令行,以%开头
sudo apt install tcl //安装tcl tclsh //启动tcl %
二、变量列表
1、置换subtitution
(1)变量置换$:把 $ 后面的变量置换成对应的值
set a 2 puts $a //输出2 set b $a+100 //b=2+100,并不是102,2+100只是个字符串
(2)命令置换[]:[ ]内是独立的TCL指令
tcl解释器会把[ ]里面的内容看作是命令去执行,执行完之后的102,去给变量b,102仍然是个字符串
set b [expr $a+100] //必须要加[] set a [expr 3+3] //6 expr 5/2 //2 expr 5.0/2 //2.5 expr 5/2.0 //2.5
(3)反斜杠置换\
\t:制表符
\n:换行
第一种写法会报错,解释器会识别到set给a的字符串有两个
第二种写法解释器会把中间的空格当作分隔符,hello world会被看成一个单词
第三种是可以的
set a hello world set a hello\ world set a {hello world}
(4)双引号和花括号
" ":对$和[]分别进行变量置换和命令置换,对各种分隔符不做处理,如空格等
set y "$a add" //y=2 add set a 2 set y 0.5 puts "[expr $x+$y]" //2.5 puts "[expr $x+$y]" //[expr 2+0.5] puts "[expr $x+$y]" //[expr $x+$y]
{ }:所有字符都是普通字符
set a 2 set a.1 4 set b $a.1 //b=2.1 set b ${a.1} //b=4
2、变量
设置:set 变量名 变量值
取值:puts $ 变量名
set a 2 puts $a puts ${a}_1 //2_1
3、数组
类似于SV中的关联数组,索引值可以是整型也可以是字符串
不可以单独声明一个数组,数组只能和数组元素一起声明
定义:set 数组名(元素名)值
取值:$数组名(元素名)
set day(monday) 1 puts $day(monday) //输出为1
array size cell_1 //3 array names cell_1
4、列表
标量的有序集合 ,列表可以嵌套,里面元素可以是列表
定义:set 列表名 {元素1 元素2…}
取值:$列表名
list 1 2 {3 4} set list1 {1 2 3} puts $list1 //1 2 3
5、一些命令
unset:删除变量或数组元素
append:把文本添加到一个变量后面
incr:把一个变量加上整数,都必须是整数类型
expr:经常用,TCL支持常用的数学函数,凡是计算都要加上这个
eval:构造和执行tcl脚本的命令,可以接收多个参数,把这些参数用空格隔开然后创建一个脚本
unset a bset txt hello append txt "!how are you" incr b 3
三、控制流
1、if语句
if {cond1}{
…
}elseif{cond2}{
…
} else {
…
}
上面是if的格式,花括号要放在上一行(固定格式)
2、foreach
foreach 变量 列表 循环主题
按照顺序取列表里面的每一个变量
set list1 {1 2 3}foreach i $list1{ puts $i }
3、break:直接结束循环
set list1 {3 2 1}foreach i $list1{ if{$i == 2}{ break } puts $i } //最后只输出3
4、continue:结束本次循环
set list1 {3 2 1}foreach i $list1{ if{$i == 2}{ continue } puts $i } //最后输出3 1
5、while
while{cond1}{
…
}
只要条件满足就一直执行花括号里面的命令,不满足条件停止循环,while中断并返回一个空字符串
6、for循环
for 参数初始化 判断条件 重新初始化参数 循环主体
先判断语句符合,进入循环,重新初始化参数,再进行判断
for {set i 3}{$i>0}{incr i-1}{puts i } //输出3 2 1
7、switch
switch option string{
…
}
option的选项默认是glob
-glob:匹配字符串
-regexpr:正则表达式的匹配方式
-exact:精确匹配
switch $x{b {incr t1} c {incr t2} }
四、过程函数
1、proc自定义函数
proc 参数名 参数列表 函数主体
可以写return或者不写
proc add {a b} {
set sun [expr $a + $b]
return $sum
}
add 3 4 //输出为7
标签:set,脚本语言,puts,expr,list1,tcl,学习,TCL,变量 From: https://blog.51cto.com/u_12597366/7965409