Expect用法浅谈

来源:互联网 发布:非英文域名 编辑:程序博客网 时间:2024/04/29 11:52

1. Expect基础语法解释

1.1 cmd arg1 arg2 arg3      

      一条Tcl命令由空格分割的单词组成. 其中, 第一个单词是命令名称, 其余的是命令参数 . 

 1.2 $myVar  $符号代表变量的值. 在本例中, 变量名称是myVar.  

1.3 [cmd arg]  

      方括号执行了一个嵌套命令. 例如, 如果你想传递一个命令的结果作为另外一个命令的参数, 那么你使用这个符号 . 

1.4 "some stuff"  # "some stuff $myVar "

      双引号把词组标记为命令的一个参数. "$"符号和方括号在双引号内仍被解释,意思是可以进行变量替换。

1.5 {some stuff}  

      大括号也把词组标记为命令的一个参数. 但是, 其他符号在大括号内不被解释.             1.6 \

      反斜线符号是用来引用特殊符号. 例如:\n 代表换行. 反斜线符号也被用来关闭"$"符号 , 引号,方括号和大括号的特殊含义 . 

基本语法​:

1.设置变量值

set str "test" 

set time="2016-05-24 16:02:34"

2. 输出一个变量的内容,使用puts 

puts $str  

3.字符串拼接

      append命令 将某个字符串加到另外一个字符串的后面: 

eg:append "Now is" $time "。"  --//Now is 2016-05-24 16:02:34。

4.运算

​      使用expr命令作为计算符号,其用法类似C语言的+=和/= ,例如:

set j [expr $i/5] 

     TCL会自动选择整数或者浮点计算: ​ 

set i 10

expr $i /4.0   --//1.25

      在TCL里面可以使用+ - * /和%作为基本运算符,另外通常还包括一些数学函数,如abs,sin,cos,exp和power(乘方)等等。 另外,还有一个起运算符作用的命令incr,它用来对变量加一: ​

 set i 1 

 incr i    --//i=2

5.流程控制 

Tcl判断:分支语句可以使用if和switch实现。if语句的和C语言类似,如:

 if { $ x < 0 } { 

      set y 10; 

}else{

      set y 0; 

注意判断子句也需要使用花括号也可以使用else和elseif。 

switch语句的用法有点类似这样: 

​switch $x { 

     0 { set y 10;} 

    10 { set y 100;} 

    20 { set y 1000;} 

} ​

循环:主要由for,foreach和while构成,而且每一个都可以使用break和continue 子句。 

for语句的格式:

​for { set i 0} {$i< 10} { incr i} {

    puts $i

如果用while循环,这个句子可以写成 ​:

while {$i < 10 } {

    puts $i; 

    ​incr i; 

​} ​

foreach是对于集合中的每一个元素执行一次命令, 命令格式是 :

foreach [变量] { 集合 } { 语句; } 例如:

​foreach j { 1 3 5} {

     put $j; 

} --//1 3 5​

6. 函数 

      Tcl里面也可以定义函数,这是通过proc命令实现的: 

proc my_proc {i}{ 

​      puts $i; 

​} ​​

这样就定义了一个名字叫proc的函数,它只是在终端显示输入变元的内容。 上述函数的使用方式如下:

my_proc { 5 }        --// 5 ​

如果变元的数目是0,只要使用空的变元列表,例如 proc my_proc {} {语句;} ​

//////////////OTHER///////////////

1)spawn语句在expect脚本中用于启动一个新的进程,在我们的程序中,spawn sftp 192.168.1.1 就是去执行sftp程序,其他的就是expect和send的指令对了。 ​

2)缺省下,expect在标准输出来输出所有来自应用程序的回应信息,你可以用下面的两个命令重定向这些信息: 

log_file [日志输出文件名] ​

      解释:这个命令让expect在你设置的文件中记录输出信息。必须注意,这个选项并不影响控制台输出信息,但如果你通过crond设置expect脚本定时运行的话,该命令就显得尤为重要和方便。

1 0
原创粉丝点击