Я обнаружил, что команда tcl exec возвращает строку из stdout сначала, а затем 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 se есть другие сценарии, называемые между ними, и это не будет работать, если мой tcl-скрипт просто будет источником , что tcl script.
Я использую tclsh 8.3
Не уверен, если это просят слишком много. Надеюсь, кто-то может это понять. Благодарю.
См. Http://wiki.tcl.tk/stderr для получения дополнительных сведений. –