`
侯上校
  • 浏览: 228628 次
  • 性别: 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

 

分享到:
评论

相关推荐

    tcl-expect

    TCL提供了一系列的控制结构来实现条件判断和循环控制,包括`if`语句和`while`、`for`循环等。 ```tcl #!/usr/bin/tclsh set flag true if {$flag} { puts "True!" } else { puts "False!" } ``` 这里展示了如何...

    expect中文man

    1. **循环结构**:利用Tcl的循环结构(如`foreach`、`while`)来重复执行某些操作。 2. **条件判断**:通过`if`语句根据不同的条件执行不同的代码块。 3. **错误处理**:利用`catch`命令来捕获并处理异常情况。 4. *...

    expect脚本编程

    - **循环结构**:使用`foreach`、`while`等循环结构来重复执行某些操作。 - **错误处理**:通过`timeout`、`abort`等关键字来处理超时或异常情况。 #### 九、性能优化 为了提高Expect脚本的执行效率,开发者需要...

    gnuplot,awk,tcl使用手册

    Gnuplot是一款强大的命令行图形绘制工具,常用于...这些手册将详细介绍这三个工具的使用方法、示例和高级特性,对于理解和掌握它们的用法非常有帮助。通过学习,你可以更好地处理数据可视化、文本分析和自动化任务。

    Tcl Tk Quick Start.pdf

    - 循环语句(如 `for` 和 `while`)。 - 条件判断语句(如 `if` 和 `switch`)。 - 异常处理机制。 4. **函数与过程:** - 如何定义和调用函数。 - 参数传递方式。 - 返回值与错误处理。 5. **字符串与列表...

    TCl 手册2

    - **2.5 控制结构**:探讨条件语句(如if/else)、循环(如while)等流程控制机制。 - **2.6 事件绑定**:解释Tk中如何通过绑定特定事件来触发脚本代码执行。 - **2.7 子进程**:讨论在Tcl中如何启动外部程序或...

    tcl-tutorial.rar_tcl脚本_脚本 tcl

    2. **命令调用**:TCL的核心是命令,如`proc`用于定义过程,`if`、`else`、`switch`用于条件判断,`foreach`、`while`进行循环操作。 3. **字符串操作**:TCL提供了丰富的字符串处理命令,如`string length`获取...

    js测试例子

    JavaScript的基础语法包括变量声明(var、let、const)、数据类型(如字符串、数字、布尔值、null、undefined、对象和数组)、操作符(算术、比较、逻辑、三元运算符)以及流程控制语句(if...else、switch、for、...

    tcl.rar_.tcl_tcl_tcl tk_tcl/tk_tcl_tk

    支持条件语句(`if-then-else`)、循环(`for`、`while`)、函数定义等。 2. **命令操作**:TCL的核心是其内置的一系列命令,如字符串操作、数学计算、文件I/O等。例如,`string`命令用于处理字符串,`expr`用于...

    RED HAT LINUX 6大全

    本书内容翔实、涉及领域广泛,并且提供了详细的例子和大量的参考资料(包括书籍、电子文档和Internet站点),是一本学习、使用和管理Linux不可多得的好书。 目 录 译者序 前言 第一部分 Red Hat Linux的介绍与安装 ...

    linux tcl_tcl_tcllinux_tcl语言LINUX_linux_

    例如,`puts`用于输出内容到标准输出,`append`用于连接字符串,`if`、`for`和`while`等控制结构用于流程控制。 3. **脚本文件** Tcl脚本通常保存在扩展名为`.tcl`的文件中,可以通过解释器`tclsh`执行。例如,`...

    javascript-koans

    - **控制流程**:条件语句(if...else)、switch语句、循环(for、while、do...while)。 - **函数**:函数声明、函数表达式、箭头函数、参数默认值、rest参数和spread运算符。 - **对象和原型**:对象的创建、...

Global site tag (gtag.js) - Google Analytics