主要原因是expect是从它发展出来的。如果你想要写一个能够自动处理输入输出的脚本
(如向用户提问并且验证密码)又不想面对C或者Perl,那么expect是你的唯一选择。
11.1.1 TCL语言
要使用TCL,你必须先安装这个程序:
% rpm -q tcl
tcl-8.0.5-30
TCL语言可以用交互式或者脚本的方式执行,要使用交互式的TCL环境,只要输入
$ tclsh
%
出现的"%"符号是TCL的提示符,然后就可以使用TCL命令的。
如果你要使用脚本方式的TCL,首先把你的脚本写成一个文本文件,例如test.tcl,然
后执行
$ tclsh test.tcl
在tcl脚本中,每一行或者是一个命令行,或者是一个注释。注释行必须以#符号开头
,而命令行最好以分号结束,虽然不一定要这样做,但是这样做可以免去不少麻烦。
变量
在tcl中,有两种基本类型的变量,即标量和数组。标量就是一般的数字或者字符串变
量,可以用set语句定义同时赋值:
% set i 1
1
字符串应该用引号括起来:
% set str "test"
'test'
要输出一个标量的内容,使用put语句:
% puts $str
test
$用来说明str是一个变量。puts函数在标准输出显示变量的内容。
数组也可以用set语句定义,实际上,tcl中建立数组只是单个建立数组的元素。例如
,
% set arr(1) 0
0
% set arr(2) 1
1
这样就建立了一个两个元素的数组arr。在TCL中,不存在相当于数组边界这样的东西
,例如
% set arr(100) to
to
这时数组中实际只存在arr(1),arr(2)和arr(100),这是和C语言不同的地方。用arr
ay size命令可以返回数组的大小:
% array size arr
3
访问数组的方法和访问标两实际是一样的,例如:
% puts $arr(100)
to
可以用同样的方法创建多维数组。
要使用数组中的所有元素,需要使用一种特殊的便利方式。首先要启动startsearsh:
% array startsearch arr
s-1-arr
这里返回了一个搜索id,你可以把它传递给某个变量,因为以后还要使用它进行进一
步的搜索:
% set my_id [array startsearch arr]
s-1-arr
现在my_id的内容是s-1-arr,然后,就可以搜索arr的内容了:
% array nextelement arr $my_id
whi
这里的array nextel