TCL基本语法
输出关键字put
puts hello
结果 => hello
puts –nonewline "hello hello" ;#puts默认输出后换行,加上-nonewline后不换行
结果 => hello hello
输出有空格的文本时需要用双引号或花括号将多个词组织成一个变元,两者区别时在处理“替换操作”时,前者允许发生替换,后者可能阻止替换。
声明变量关键字set
set a Hello;#定义变量a并赋值
puts $a;#输出变量a的值
=>Hello
set a "Hello world";#重新赋值
puts $a;#输出变量a的值,此时要加”$”
=>Hello world;
puts a;#输出字符a,不加”$“
=> a;
set b $a;#将a的值赋给b
=>Hello world
puts $b;
=>Hello world
声明数组
set qian(0) 1;
set qian(1) 2;#声明数组
set qian(123) f;
set qian(6789) fs;#数组下标可以不按照顺序
set qian(good) yes;#数组下标可以是字符串
puts $qian(123);#输出数组元素qian(123)的值
=>f
puts [array names personA];#输出数组的全部索引
=>0 1 123 6789 good
set qian(1,1,1,1,1) fs;#声明多维数组
parray qian;#使用parray关键字打印出qian数组的所有信息
puts [array size qian];#输出数组qian的元素个数
#使用arrar命令来声明一个数组
array set arrName { index1 value1 index2 value2 ...}
array set arrName "";#声明一个空数组
替换关键字$
$符实现引用替换,$a等价于变量a的值。TCL对替换只进行一遍解释,忽视嵌套的$
set foo oo
=>oo
set dollar foo
=>foo
set x $$dollar
=>$foo;
#只解释一次,将“$dollar”用dollar的值(foo)代替;
set x {$foo};
#等效为 set x {$foo},花括号阻止替换。
=>$foo
set y $x
=>$foo; #一轮替换
三种括号
set a 123
=>123
puts "$a";#双引号会替换
=>123
puts {$a};#花括号不会替换
=>$a
set b [set a 5];#先执行方括号内的命令,完成后返回结果,这里是将set a 5命令输出的结果赋给b
=>5
字符串操作关键字string
#语法
string option string1 string2;#option选择功能
#option的操作选项:
# compare 按照字典的排序方式进行比较。根据string1 <,=,>string2分别返回-1,0,1
# first 返回string2中第一次出现string1的位置,如果没有出现string1则返回-1
# last 和first相反
# trim 从string1中删除开头和结尾的出现在string2中的字符
# tolower 返回string1中的所有字符被转换为小写字符后的新字符串
# toupper 返回string1中的所有字符串转换为大写后的字符串
# length 返回string1的长度
算术操作
#incr语法:
incr variable integer(variable必须为数字)
set a 3;
incr a 3;#将a加3
incr a –3;#将a减3
#expr语法:
expr function number#执行复杂算术(乘除法等)时,必须将expr命令写在算术操作前
set a 20; set b 4;
set c [expr $a/$b]; #此时的c的值为5
#除此之外,expr还能够识别一些函数及其返回值如下:
#abs(x) x的绝对值
#round(x) x四舍五入后得到的整数值
#sin(x) x的正弦值
set a [expr sin(0.3)]; #计算0.3的正弦
判断语句if
if { 表达式 } {
#运算;
} else { #注意:else必须要和if的后面一个{在同一行。
#其他运算;
}
选择语句switch
switch $x {
数值1 { 操作1 ;}
数值2 { 操作2 ;}
}
循环语句foreach
语法:
foreach var list { proc body };#遍历列表各项,逐次将各元素值存入 var 中并执行 proc body
set lst "1 2 3 4";
结果是=>1 2 3 4
foreach l1 $lst { puts $l1 };
结果是=>
1
2
3
4
库函数
lindex - 从列表中获得一个元素
lindex {a b c};
→ a b c
lindex {a b c} {};#返回列表本身
→ a b c
lindex {a b c} 0;#返回第一个元素
→ a
lindex {a b c} 2;
→ c
lindex {a b c} end;#返回最后一个函数
→ c
lindex {a b c} end - 1;
→ b
lindex {{a b c} {d e f} {g h i}} 2 1;
→ h
lindex {{a b c} {d e f} {g h i}} {2 1};
→ h
lindex {{{a b} {c d}} {{e f} {g h}}} 1 1 0;
→ g
lindex {{{a b} {c d}} {{e f} {g h}}} {1 1 0};#返回子列表中的函数
→ g