1 set & unset
- set <variable> <value> 声明一个变量
- unset <variable>... 删除变量、数组、数组元素
set num 100 # 声明一个变量"num",并赋值100
set today "2023-8-12" # 声明一个变量"today",并赋值"2023-8-12"
unset num today # 从解释器中删除"num"和"today"变量
2 expr
expr常规计算表达式
set x 100
set y [ expr $x + 100 ] # y = x + 100
3 置换符[ ]
- cmd1 [ cmd2 ... ] # 将[cmd2 ... ]的结果返回给前面的cmd1
4 incr
set a 100
incr a 100 # (有参数) a = 100 + 100 = 200
incr a # (无参数,默认加1) a = 200 + 1 = 201
5 数组
TCL的数组与C语言的数组不一样,不能单独声明一个数组,必须与数组元素一起声明
set nums(0) 100 # 声明一个数组nums, nums[0] = 100
set nums(1) 200
set nums(9) 1000
6 list
list在TCL中表示一个有序集合
syntax: list <value>...
# 生成list, list元素为<value>, <value>可以是变量也可以是list
Example:
list 1 2 {3 4} # list的元素为1, 2, {3, 4}
syntax: concat list list...
# 整合两个list
Example:
concat {1 2 3} {4 5 6} # 整合后的list为{1 2 3 4 5 6)
syntax: lindex list index
# 返回list的第index个元素
Example:
lindex {1 2 {3 4}} 2 # 返回list的第2个元素, 返回值为{3 4}
syntax: llength list
# 返回list的元素个数
Example:
llength {1 2 {3 4}} # 返回值为3
syntax: linsert list index value...
# 在list index处插入元素value...
Example:
linsert {1 2 5 6} 1 7 8 # 1 7 8 2 5 6
syntax: lappend varname value...
# 把vaIue作为一个元素附加到vamame后面
Example:
lappend a 1 2 3 # 1 2 3
7 if
set x 100
if { $x > 90 } {
if { $x == 100 } {
puts "x == 100"
} else {
puts "x > 90, but x != 100"
}
} elseif { $x >= 80 } {
puts "x < 90, x >= 80"
} elseif { $x >= 60 } {
puts "x < 80, x >= 60"
} else {
puts "x < 60"
}
8 while
set i 0
while { $i > 10 } {
puts "index: $i"
incr i
}
9 switch
TODO
10 for
for { set i 0 } { $i < 10 } { incr i } {
puts "index: $i"
}
11 foreach
list num_list
foreach itm $num_list {
puts "$itm"
}
Reference
感谢 十二、TCL脚本