使用 expect_out(buffer) 消失输出

vanishing output with expect_out(buffer)

使用语言:TCL / Expect

当我打印 expect_out(buffer) 的输出时,它出于某种原因删除了整个打印行。我不知道这是做什么的。我什至用 -nonewline 分解了“puts”输出以确保这一行的输出也消失了。

代码:


     set var $expect_out(0,string)
     foreach line [split $var \n] {
         puts -nonewline "line: "
         puts $line
     }

输出:


    somedata
    line: somemoredata
    line: evensomemoredata

预期输出:


    line: somedata
    line: somemoredata
    line: evensomemoredata

什么会导致此输出?我该如何解决这个问题?

*回答后编辑:

为了帮助其他人解决 Expect 中的这个问题,在您的 expect 脚本中添加以下命令来解决问题:

    exp_internal 1

这显示了正在发生的一切,包括返回的缓冲区中的值。

通常在 Expect 中,衍生程序输出中的 \n 个字符将被转换为 \r\n。您可以像这样手动删除 \r 个字符:

set var $expect_out(0,string)
set var [regsub -all "\r" $var ""]
... ...