我在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“文件中写入任何内容。
发布于 2011-07-01 06:40:23
如果命令返回非零,或者如果它向stderr发送任何内容,则exec将返回错误。在http://wiki.tcl.tk/exec上有一个关于结合使用catch和exec的非常深入的讨论
发布于 2011-07-01 04:12:43
如果发现任何差异,diff (和comm)将退出非零值,因此您可以重定向输出以使用它们,如“to this change?”测试。对于Tcl,你需要使用`|| :‘习惯用法来忽略退出状态。
附言:“grep的无用用法”...sed -n -e '/INTERNAL VERSION: /s//gp'
https://stackoverflow.com/questions/6540470
复制相似问题