`
侯上校
  • 浏览: 215527 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【转】expect语法基础: while、for 循环、if 语句的用法示例

 
阅读更多
==两种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-Bob@hzling08:~/test/tcl]-(1109)No.108->$ cat tclfor.test
    #!/usr/bin/expect --
    #                  http://bbs.chinaunix.net/thread-2301733-1-1.html
    # 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-Bob@hzling08:~/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 5
while { $p_loop } {
    send_user "\nStpe 1 Ping to server..."
    set timeout 60
    send "ping 10.1.1.1 -c5\r"
    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 FAIL\n"
            exit 1
        }
}
===expect读取文件的例子
#!/usr/bin/expect --
#            http://scmbob.org/counting_file_lines.html
#open a file
set fd [open "/home/xiabao/myfile.txt" r]
set number 0

# read each line
while { [gets $fd line] >= 0 } { incr number }
puts "Number of lines: $number"

close $fd

 

分享到:
评论

相关推荐

    expect4j.jar 1.0

    The current version has successfully run a 10,000 line Tcl script which heavily depends on Expect for it operation. Expect is the kitchen sink of IO control. It supports control of processes and ...

    JSONException:com.alibaba.fastjson.JSONException: expect ‘:’ at 0, actual = 已解决

    该异常为运行时异常,一定不是语法错误。 意思是JSONEObject转换异常,通常为fromObject() 方法位置报错。 检查你代码的 JSONEObject.fromObject(result) 代码位置,参数result不符合Json的定义格式,所以无法转换成...

    Linux经典脚本expect的示例及基本用法

    Expect的作者有如下定义:Expect是一个用来实现自动交互功能的软件套件(Expect [is a] software suite for automating interactive tools)。使用它系统管理员的可以创建脚本用来实现对命令或程序提供输入,而这些...

    expect中为send语句上加变量的代码

    代码如下:#!...” {send “yes\r” }sleep 1expect “Enter passphrase for key*”send “$password\r”for {set snum 0} {$snum &lt;= 6} {incr snum} {expect “*#”send “ls -l /opt/backup/fivetre

    Core Data: Updated for Swift 3

    This book strives to give you clear guidelines for how to get the most out of Core Data while avoiding the pitfalls of this flexible and powerful framework. We start with a simple example app and ...

    Expect 5.21 for windows

    expect 521 for windows, 一个在Windows下实现自动化的工具

    Expect.pm:Expect Perl模块的官方源代码

    Expect.pm:Expect Perl模块的官方源代码

    expect-5.21-for-win.rar

    windows上使用expect,用于在windows下编写shell交互脚本

    tcl-expect的基础包

    linux交互式编程expect的基础包

    Exploring Expect (A Tcl-based Toolkit for Automating Interactive Programs)

    Exploring Expect (A Tcl-based Toolkit for Automating Interactive Programs)

    expect-dom:expect.js 的 DOM 相关断言

    期望域 的插件,用于使用节点或浏览器对 DOM 元素进行断言。特征: 跨浏览器:适用于 IE8+、Firefox、Safari、Chrome、Opera。 Node.JS 就绪: require('expect.js') 。 与expect.js单一依赖expect.js 。安装节点从 ...

    linux中expect的介绍与使用示例

    一、概述 ...Expect的作者Don Libes在1990年 开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件 (Expect [is a] software suite for automating interactive tools)

    Expect 5.21r1b1 for Windows

    Expect 5.21r1b1 for Windows in a zip

    expect5.45.4.tar

    The Expect package was installed in the LFS temporary tools directory for testing other packages. These procedures install it in a permanent location. It contains tools for automating interactive ...

    用expect 实现切换用户时自动输入密码.txt

    昨天一个网友问如何能够将输入密码的工作在shell里面自动完成,研究了一下,发现这种交互式的工作,普通的shell实现不了,据说可以借助expect来搞定,所以初步学习了一下expect,成果和大家分享一下: 应用一: 实现...

    jest-expect-message:向Jest期望添加自定义消息:joker::right_anger_bubble:

    开玩笑的期望消息 :...解决方案jest-expect-message允许您使用String消息的第二个参数来调用expect 。 例如,与上述相同的测试: test ( 'returns 2 when adding 1 and 1' , ( ) =&gt; { expect ( 1 + 1 , 'Woah this

    expect.as:ActionScript 3 的 BDD 风格断言库

    expect( true ) . to . be . ok() ; expect( false ) . not . to . be . ok() ; expect( "everything" ) . to . be . ok() ; expect( null ) . not . to . be . ok() ; expect( undefined ) . not . to . be . ok() ...

    typescript-expect-plugin:la懒惰,在注释中编写简单的测试

    快速开始npm install typescript-expect-plugin将插件添加到tsconfig.json : { "compilerOptions" : { "plugins" : [ { "name" : "typescript-expect-plugin" } ] } ,}将VS Code打字稿更改为工作区版本:用法警告 :...

    Unix expect 工具

    由于Tcl提供了两种字符串引用的方法:单引和双引,情况变的更糟。(在Tcl里面,如果不会出现二义性话,没有必要使用引号)。在expect的手册里面,还有一个独立的部分来解释这种复杂性。幸运的是:有一些很好的例子似乎...

    跟老男孩学Linux运维:Shell编程实战

    / 1879.6 本章小结 / 191第10章 while循环和until循环的应用实践 / 19210.1 当型和直到型循环语法 / 19210.2 当型和直到型循环的基本范例 / 194第11章 for和select循环语句的应用实践 / 217第12章 循环控制及...

Global site tag (gtag.js) - Google Analytics