将脚本调用为
tclsh ./TestDriver.tcl TestList
tcl脚本在一行(?)之后停止。但是在调出时将输出重定向到文件
tclsh ./TestDriver.tcl TestList >bar.out
它运行顺利。
任何想法可能是这种行为的原因?
答案 0 :(得分:1)
当输出定向到终端或文件时,几乎所有Tcl脚本的工作方式都相同。虽然有一个tcl_interactive
变量可以关闭事物,但是当您将脚本作为参数提供时它不起作用。另一个基线差异是默认情况下stdout
会有不同的buffering;您可以通过以下方式更改要定义的内容:
fconfigure stdout -buffering none ;# Or “line” or “full”
但是,我希望那里的差异可以使得(重点轻微)在重定向到文件的情况下不太可能工作。无论发生什么(我打赌它涉及运行子流程或使用扩展包)我根据所提供的证据无法猜测。
答案 1 :(得分:0)
我猜tcl程序正在调用istty函数,并根据它是否认为它正在写入终端来改变它的行为。可能是,它试图格式化输出,而宽终端导致它失败。