【问题标题】:How does this expect statement work in TCL?这个期望语句在 TCL 中是如何工作的?
【发布时间】:2012-03-16 00:08:43
【问题描述】:

我阅读了以下代码,但我不明白它是如何工作的:

set accum ""
set timeout 1
    expect {
        -re {.+} {
            set accum "${accum}$expect_out(0,string)" 
            exp_continue
        }
    }
set timeout 10

一开始,我们设置了accum和timeout,那么有一个expect命令尝试匹配什么?之后,我们将超时设置为 10,整个代码是如何工作的?这是什么意思?

【问题讨论】:

    标签: tcl expect


    【解决方案1】:

    直到代码超时(在任何东西的最后一次匹配后 1 秒 ),只要它匹配某些东西(这是任何字符序列 - 可能不包括换行符 - 因为 -re {.+})它将它附加到 accum 变量并重新启动期待某些东西(exp_continue 确实很神奇)。

    使用append accum $expect_out(0,string) 会更高效,但它的完成方式并没有错误

    【讨论】:

    • 它附加还是设置?因为在代码中,我们使用了set,​​下次会重写accum!
    • @ratzip:两者都有。 set foo "${foo}bar" 追加 bar 到变量foo 通过设置 变量foo 到它的当前值加上bar
    猜你喜欢
    • 1970-01-01
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    相关资源
    最近更新 更多