我发现 tcl exec 命令首先从标准输出返回字符串,然后是标准错误。例如,我的以下“测试脚本”按此顺序生成消息:
puts "test started"
puts stderr "some non-fatal error goes to stderr"
puts "test passed"
然后我像这样执行脚本:
set ret [ catch { exec sh -c $cmd } msg ]
我从 $msg 得到的是:
test started
test passed
some non-fatal error goes to stderr
这真的让我很难得到正确的结果。
有人可以让我们知道是否可以按顺序从 stdout 和 stderr 获取消息,并且:
1)请不要像这样重定向,这确实可以让它们井然有序:
set ret [ catch {exec $cmd >&log.txt} msg ]
2)我必须在我的tcl 脚本中调用那个tcl脚本,对不起
3) 我也不能直接获取 .tcl 测试脚本,因为两者之间还调用了其他脚本,如果我的 tcl 脚本只是获取该tcl 脚本,它将无法工作。
我正在使用 tclsh 8.3
不确定这是否要求太多。我希望有人能解决这个问题。谢谢。