我發現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