Tcl “为什么?”;执行官;给予;“儿童异常退出”;在这个代码中?

Tcl “为什么?”;执行官;给予;“儿童异常退出”;在这个代码中?,tcl,Tcl,我在tcl中运行以下代码:- set version [exec grep "INTERNAL VERSION:" mojave.log | sed -n -e "s/INTERNAL VERSION: //g" > xor.diff] set p [exec diff ../log.warning.diff ../log.warning.gold >> xor.diff ] 对于最后一行,在进行一些区分之后,它给出了以下错误:- > RULE-311 WARNING

我在tcl中运行以下代码:-

set version [exec grep "INTERNAL VERSION:" mojave.log | sed -n -e "s/INTERNAL VERSION: //g" > xor.diff]

set p [exec diff ../log.warning.diff ../log.warning.gold >> xor.diff ]
对于最后一行,在进行一些区分之后,它给出了以下错误:-

> RULE-311 WARNING: Gdsii layer number 85 datatype 0 has already been defined
> TCL-11   WARNING: Command "check quartz drc" is overridden, Quality Of
> TCL-11   WARNING: Command "delete marker quartz" is overridden, Quality Of
> TCL-11   WARNING: Command "import marker quartz" is overridden, Quality Of
> TCL-11   WARNING: Command "mojave! run filter log" is overridden, Quality Of
> TCL-11   WARNING: Command "run quartz gui" is overridden, Quality Of Results
> TCL-11   WARNING: Command "ui! mojave draw rectangle" is overridden, Quality
> TCL-11   WARNING: Command "ui! mojave set_context" is overridden, Quality Of
> TCL-12   WARNING: Overridden command "mojave! run filter log" is used,
child process exited abnormally
     while executing
"exec diff ../log.warning.diff ../log.warning.gold 2> xor.diff "
     invoked from within
"set p [exec diff ../log.warning.diff ../log.warning.gold 2> xor.diff ]"
     (file "test.tcl" line 4)
     invoked from within
"source test.tcl"
它不会在“
xor.diff
”文件中写入任何内容。

diff
(和
comm
)如果发现任何差异,将退出非零状态,因此您可以重定向输出以将其用作“是否发生了此更改?”测试。对于Tcl,您需要使用“| |::”习惯用法来忽略退出状态


附言“grep的无用使用”
sed-n-e'/内部版本:/s//gp'
exec
如果命令返回非零或向stderr发送任何内容,则返回错误。如果我们将“exec”命令写在“catch”中,我们将非常深入地讨论如何将
catch
exec
at

一起使用。感谢您的帮助。+1表示“无用的grep使用”;使我免于回答那样的问题