我正在尋找某些組織來獲取在Windows中的TCL腳本中執行的命令的輸出。情況是我有一個最終調用perl腳本的tcl腳本。事情是這樣的:將來自STDOUT和STDERR的消息分配給TCL變量
perl腳本結果輸出到標準輸出和標準錯誤:
#print message to STDOUT by default
print "process A running ...";
...
if ($fail) {
#print to STDERR
print STDERR "Process A failed.";
}
最初,所有我想從TCL腳本,看到的是從打印到STDERR消息,但現在我想看到兩者。有沒有辦法讓打印出來的消息到stdout被保存到一個tcl變量,並且從打印到stderr的消息被保存在另一個tcl變量中?這是我在TCL試圖得到這個工作:
puts "Running perl script ..."
catch {[set stdout_var [exec perl C:/myScript.pl >@stdout]]} err_msg
puts "\n\nerrmsg:\n$err_msg"
puts "\n\nstdout:\n$stdout_var"
這樣做,我得到的只是在ERR_MSG變量打印到STDERR消息(所以我走了一半),然而,stdout_var變量從未被設置爲任何東西。我希望它會設置爲STDOUT的消息,但事實並非如此。如果我刪除> @stdout,則stdout_var仍然不會被分配,err_msg包含打印到STDERR和STDOUT的所有消息。
感謝您的意見!
重定向其中的一個臨時文件。 – potrzebie