Я обнаружил, что команда 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 ]
и получаю из $ 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 скрипт в my tcl-скрипт, извините
3) Также я не могу напрямую создать тестовый скрипт .tcl, потому что между ними есть другие скрипты, и он не будет работать, если мой tcl-скрипт будет просто источником that tcl script.
Я использую tclsh 8.3
Не уверен, что это слишком много.Я надеюсь, что кто-то может понять это.Спасибо.