expect语法基础whilefor循环if语句的用法示例.docx

上传人:蓝**** 文档编号:95791548 上传时间:2023-08-30 格式:DOCX 页数:11 大小:18.68KB
返回 下载 相关 举报
expect语法基础whilefor循环if语句的用法示例.docx_第1页
第1页 / 共11页
expect语法基础whilefor循环if语句的用法示例.docx_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《expect语法基础whilefor循环if语句的用法示例.docx》由会员分享,可在线阅读,更多相关《expect语法基础whilefor循环if语句的用法示例.docx(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、expect语法基础:while、for循环、if语句的用法示例from CU=两种for循环的写法for set i 0 $i$ cat tclfor.test #!/usr/bin/expect - # # for Bob testing # puts -1- for set i 0 $i 10 incr i puts I inside first loop: $i puts -2- for set i 3 $i 2 incr i puts I inside second loop: $i puts -3- puts Start set i 0 while $i $ ./tclfor.te

2、st -1- I inside first loop: 0 I inside first loop: 1 I inside first loop: 2 I inside first loop: 3 I inside first loop: 4 I inside first loop: 5 I inside first loop: 6 I inside first loop: 7 I inside first loop: 8 I inside first loop: 9 -2- -3- Start I inside third loop: 0 I after incr: 1 I inside t

3、hird loop: 1 I after incr: 2 I inside third loop: 2 I after incr: 3 I inside third loop: 3 I after incr: 4 I inside third loop: 4 I after incr: 5 I inside third loop: 5 I after incr: 6 I inside third loop: 6 I after incr: 7 I inside third loop: 7 I after incr: 8 I inside third loop: 8 I after incr:

4、9 I inside third loop: 9 I after incr: 10 -4- 1 -5- 2=if的写法 if $sync_flag = true puts Sync start at clock format clock seconds catch eval exec $TOOL_HOME/bin/$sync_cmd $sync_parm output puts $output if $output eq SYNC complete! puts SYNC complete! else puts SYNC error! exit 1 puts Sync end at clock

5、format clock seconds =ping的例子set p_loop 5while $p_loop send_user nStpe 1 Ping to server. set timeout 60 send ping 10.1.1.1 -c5r expect 64 bytes send_user ok set p_loop 0 timeout set p_loop expr $p_loop-1 #expect里的加减法 send_user failed.n eof send_user ping 10.1.1.1 -c5 FAILn exit 1 =expect读取文件的例子#!/us

6、r/bin/expect -# http:/scmbob.org/counting_file_lines.html#open a fileset fd open /home/xiabao/myfile.txt rset number 0# read each linewhile gets $fd line = 0 incr number puts Number of lines: $numberclose $fd=当前用户是root,我想用 su - oracle,然后在oracle下使用 expect -c 命令,不想用脚本,想用一行命令实现su - oracle -c expect -c

7、spawn sqlplus / as sysdba; expect SQL; send alter user sys identified by 123456expect中的流程控制语句用法2011-01-07 14:31Expect语言是基于Tcl的, 作为一种脚本语言,Tcl具有简单的语法:cmd arg arg arg一条Tcl命令由空格分割的单词组成. 其中, 第一个单词是命令名称, 其余的是命令参数 .$foo$符号代表变量的值. 在本例中, 变量名称是foo.cmd arg方括号执行了一个嵌套命令. 例如, 如果你想传递一个命令的结果作为另外一个命令的参数, 那么你使用这个符号 .

8、some stuff双引号把词组标记为命令的一个参数. $符号和方括号在双引号内仍被解释 .some stuff大括号也把词组标记为命令的一个参数. 但是, 其他符号在大括号内不被解释.反斜线符号() 是用来引用特殊符号. 例如:n 代表换行. 反斜线符号也被用来关闭$符号 , 引号,方括号和大括号的特殊含义 .1. 命令行参数 $argc,$argv 0,$argv 1 . $argv n if $argc2 puts stderr Usage: $argv0 login passwaord.n exit 1 2. 输入输出 puts stderr Usage: $argv0 login p

9、asswaord.n 3. 嵌套命令 set LOGIN lindex $argv 0 set PASS lindex $argv 14. 命令调用 spawn telnet 10.13.32.30 70015. 函数定义和调用 proc do_console_login login pass . 6. 变量赋值 set done 17. 循环 while ($done) . 8. 条件分支Switch switch - $timeout_case 0 . 1 . 2 . 9. 运算 incr timeout_case此外,还可以看到 Expect的以下命令:sendexpectsend_us

10、erexpect eofexit上面两条语句可以判断spawn所运行的命令的退出,然后exit还可以用interact可以进入所运行命令的交互界面。expect使用spawn调用其他的执行程序,比如spawn telnet 218.199.20.98 2600但是在使用的过程中发现spawn不支持管道和重定向,也就是说对于ls |more ; mysql -p update.sql 这样的命令spawn不能正确解析。解决的办法是把这些命令放到一个shell脚本里面,在用spawn执行这个shell脚本。expect 创建子函数使用proc标志,也即: proc functionname par

11、ameter1,parameter2 . 调用子函数非常简单 functionname $param1 $param2expect 使用expect ,send 组合实现自动交互 ,语法如下: expect login; send $usern passwd: send $passwdn 使用send的使用后面的内容不显示给用户,如要显示给用户,应使用send_user注意点: 1. expect里面基本是都是使用 而不是使用(),比如函数参数输入外面应用,应该是while 而不是 while ( ). 2. 应和其他符合有空格, expect 正确,expect 就会报错. 3. spawn

12、 不支持管道和重定向.TCL的运算方式比较别扭,它使用expr命令作为计算符号,其用法类似C语言的+=和/=,例如,% set j expr $i/51注意TCL会自动选择整数或者浮点计算:% set l expr $i /4.01.25% set l expr $i /41在TCL里面可以使用+ - * /和%作为基本运算符,另外通常还包括一些数学函数,如abs,sin,cos,exp和power(乘方)等等。另外,还有一个起运算符作用的命令incr,它用来对变量加一:% set i 11% incr i2流程控制tcl支持分支和循环。分支语句可以使用if和switch实现。if语句的和C语

13、言类似,如if $ x 0 set y 10;注意判断子句也需要使用花括号。与C语言一样,tcl的if语句也可以使用else和elseif。switch语句的用法有点类似这样:switch $x 0 set y 10;10 set y 100;20 set y 400;与C的switch语句不同,每次只有符合分支值的子句才被执行。循环命令主要由for,foreach和while构成,而且每一个都可以使用break和continue子句。for语句的格式有点类似这样:for set i 0 $i 10 incr i puts $i将会输出从1到9的整数。如果用while循环,这个句子可以写成while $i 10 puts $i;incr i;foreach是对于集合中的每一个元素执行一次命令,大致的命令格式是foreach 变量 集合 语句;例如% foreach j 1 3 5 put $j;135函数如同在一般的编程语言里面一样,在tcl里面也可以定义函数,这是通过proc命令实现的:proc my_proc iputs $i;这样就定义了一个名字叫proc的函数,它只是在终端显示输入变元的内容。要使用这个函数,简单地输入它的名字:% my_proc 5 5如果变元的数目是0,只要使用空的变元列表,例如 proc my_proc 语句;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 初中资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁