【问题标题】:vanishing output with expect_out(buffer)用 expect_out(buffer) 消失输出
【发布时间】:2021-07-14 07:57:23
【问题描述】:

使用语言: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

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

【问题讨论】:

  • 可能“somedata”包含回车 (\r) 字符。

标签: output tcl expect puts


【解决方案1】:

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

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

【讨论】:

  • 帮助 :-) 出于某种原因,我的输出在前面加上了“Run..”,但这可能与此无关。我用你的解决方案解决了这个问题。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 2018-05-24
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
相关资源
最近更新 更多