欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:95791548       资源大小:18.68KB        全文页数:11页
    • 资源格式: DOCX        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    expect语法基础:while、for循环、if语句的用法示例from CU=两种for循环的写法for set i 0 $i<=10 incr i #i默认增量是1,即等价incr i 1。注意这个反括号一定要写在这行行末:args: should be "for start test next command".Q:能不能改为i为我指定的几个数就好。比如我指定i为 3 5 6 7 9这几个数? 谢谢。foreach  i 1 3 5 7 9     puts "$i"注:expect 用的是tcl语法,不是shell语法,或者用switch=for/while循环写法    15:33:05-Bobhzling08:/test/tcl-(1109)No.108->$ 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 < 10         puts "I inside third loop: $i"        incr i        puts "I after incr: $i"        set i 0    incr i    puts "-4-"    puts "$i"    # This is equivalent to:    set i expr $i + 1    #expect里的加减法    puts "-5-"    puts "$i"运行:    15:33:09-Bobhzling08:/test/tcl-(1110)No.109->$ ./tclfor.test    -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 third 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: 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 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读取文件的例子#!/usr/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: $number"close $fd=当前用户是root,我想用 su - oracle,然后在oracle下使用 expect -c 命令,不想用脚本,想用一行命令实现su - oracle -c "expect -c 'spawn sqlplus / as sysdba; expect "SQL>" send "alter user sys identified by 123456  expect中的流程控制语句用法2011-01-07 14:31Expect语言是基于Tcl的, 作为一种脚本语言,Tcl具有简单的语法:      cmd arg arg arg  一条Tcl命令由空格分割的单词组成. 其中, 第一个单词是命令名称, 其余的是命令参数 .  $foo  $符号代表变量的值. 在本例中, 变量名称是foo.  cmd arg  方括号执行了一个嵌套命令. 例如, 如果你想传递一个命令的结果作为另外一个命令的参数, 那么你使用这个符号 . "some stuff"  双引号把词组标记为命令的一个参数. "$"符号和方括号在双引号内仍被解释 .  some stuff  大括号也把词组标记为命令的一个参数. 但是, 其他符号在大括号内不被解释.   反斜线符号() 是用来引用特殊符号. 例如:n 代表换行. 反斜线符号也被用来关闭"$"符号 , 引号,方括号和大括号的特殊含义 .1. 命令行参数  $argc,$argv 0,$argv 1 . $argv n      if $argc<2               puts stderr "Usage: $argv0 login passwaord.n "              exit 1      2. 输入输出         puts stderr "Usage: $argv0 login passwaord.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 1 7. 循环     while ($done)            .     8. 条件分支Switch     switch - $timeout_case             0                .                        1                .                                       2                .                             9. 运算     incr timeout_case此外,还可以看到 Expect的以下命令:sendexpectsend_userexpect 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 parameter1,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 不支持管道和重定向.TCL的运算方式比较别扭,它使用expr命令作为计算符号,其用法类似C语言的+=和/=  ,例如, % set j expr $i/5 1 注意TCL会自动选择整数或者浮点计算: % set l expr $i /4.0 1.25 % set l expr $i /4 1 在TCL里面可以使用+ - * /和%作为基本运算符,另外通常还包括一些数学函数,如a  bs,sin,cos,exp和power(乘方)等等。 另外,还有一个起运算符作用的命令incr,它用来对变量加一: % set i 1 1 % incr i 2 流程控制 tcl支持分支和循环。分支语句可以使用if和switch实现。if语句的和C语言类似,如 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;  1 3 5 函数 如同在一般的编程语言里面一样,在tcl里面也可以定义函数,这是通过proc命令实现  的: proc my_proc i puts $i;  这样就定义了一个名字叫proc的函数,它只是在终端显示输入变元的内容。 要使用这个函数,简单地输入它的名字: % my_proc 5  5 如果变元的数目是0,只要使用空的变元列表,例如 proc my_proc 语句; 

    注意事项

    本文(expect语法基础whilefor循环if语句的用法示例.docx)为本站会员(蓝****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开