交互模式启动tcl
命令号里直接输入tclsh
分隔符
单词分隔符
空白字符
命令分隔符
分号(;) 或者 回车(\n)
变量
变量赋值
变量赋值
第一个参数名字为varname的变量
set varname value
动态变量
% set a x
x
% set $a 5
5
% puts $a
x
% puts $x
5
% puts $$a
$x
% eval puts $$a
5
列表
一组用空白字符分割的元数,可以用双引号、大括号或者转移空白字符分割
% set tmp_list "1 2 3 4 5"
1 2 3 4 5
% set tmp_index 4
4
% puts [lindex $tmp_list [expr $tmp_index -1 ]]
4
关联数组
% set person(name) Jack
Jack
% set person(age) 29
29
% set person(position) enginerr
enginerr
% set person(123) xyz
xyz
% puts [array names person]
position age name 123
% puts $person(name)
Jack
字典
% dict set mydict a {b c}
a {b c}
% dict get $mydict a b
c
文件句柄
set myfile [open "filename" r]
布尔值
布尔值,可以表示为1,yes,YES,TURE 或 true 为真值和0,no , NO, FALSE或 false 为假值。
变量使用
$varname
置换
-
变量置换 $
-
命令置换 []
-
转移置换 \
括号和引号
大括号(Braces),在大括号内的信息不能被替换,相当于一个隔离墙,如果需要替换可以使用引号(double quote)。
方括号(Square brackets),创建嵌套的命令,既然是嵌套就是在内部,按照替换原则,越内部的先被替换掉。
双引号(double quote),将一串字符并成一个单一的 word,就是让 Tcl 解释器明白即使引号内部有很多空格,也是作为一个 word 来处理。 如果中间没有空白字符可以省略双引号
小括号(Round brackets),当这个出现在变量中,做为数组 index 的 container,比如 set mine(name) Steve,name 就是数组的一个 index。
字符串
字符串处理
正则
控制流
if
if {逻辑运算 / 关系运算 等布尔表达式} { #虽然要进行表达式运算,这里不用使用 expr 命令
} elseif {布尔表达式} {
# elseif 可选
} else {
# else 可选
}
foreach/for/while
while
#!/usr/bin/tclsh
set a 10
#while loop execution
while { $a < 20 } {
puts "value of a: $a"
incr a
}
for
#!/usr/bin/tclsh
# for loop execution
for { set a 10} {$a < 20} {incr a} {
puts "value of a: $a"
}
foreach
#!/usr/bin/tclsh
set personA(Name) "Dave"
set personA(Age) 14
foreach index [array names personA] {
puts "personA($index): $personA($index)"
}
break
同其他语言
continue
同其他语言
switch
#!/usr/bin/tclsh
set grade B;
switch $grade {
A {
puts "Well done!"
}
B {
puts "Excellent!"
}
C {
puts "You passed!"
}
F {
puts "Better try again"
}
default {
puts "Invalid grade"
}
}
puts "Your grade is $grade"
过程函数
定义过程
作用域
文本处理
set myfile [open "filename" r]
其他
改变运算符号的优先级
% set a 20
20
% set b 10
10
% set c 15
15
% set d 5
5
% set e [expr[expr $a+$b] * $c /$d]
invalid command name "expr30"
% set e [expr [expr $a+$b] * $c /$d]
90
% set e [expr ($a + $b) * $c /$d]
90
% set f [expr !($a && $b)]
0
https://blog.csdn.net/qq_42135020/article/details/127971074
https://zhuanlan.zhihu.com/p/39979318
https://www.yiibai.com/tcl/tcl_arrays.html
常用命令
puts
set 变量赋值
expr 表达式运算 :数学表达式运算、逻辑运算、关系运算、三元运算
incr 数字加一 类似其他余元的 ++
array names arrayName 数组key列表
array size arrayName 数组大小
string tolower $stringName
format 类似c种的printf
scan [scan "被扫描的字符串" {%[模式]} m] #将被扫描字符串中符合模式的部分 赋值给变量m
标签:index,set,变量,puts,expr,笔记,tcl,name From: https://www.cnblogs.com/halu126/p/17425828.html