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