我发现tcl exec命令从stdout先返回stderr,然后是stderr。例如,我下面的“测试脚本”的顺序生成消息:tcl exec首先读取stdout然后stderr?
puts "test started"
puts stderr "some non-fatal error goes to stderr"
puts "test passed"
然后我执行这个脚本是这样的:
set ret [ catch { exec sh -c $cmd } msg ]
和我从$味精得到的是:
test started
test passed
some non-fatal error goes to stderr
这真的让我很难得到正确的结果。
有人可以让如果知道是否有可能获得为了从两个输出和错误消息,并且:
1)请不要重定向这样的,这可以让他们一切为了确实:
set ret [ catch {exec $cmd >&log.txt} msg ]
2)我有打电话给在我 TCL脚本 TCL脚本,对不起
3)我也不能直接源.tcl测试脚本becau如果我的tcl脚本只是源即 tcl脚本,那么在这两者之间就会调用其他脚本。
我使用tclsh的8.3
不知道这是否是太奢侈了。我希望有人可以弄清楚这一点。谢谢。
有关更多提示,请参阅http://wiki.tcl.tk/stderr。 – 2010-08-23 14:57:14