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