【问题标题】:exec command in Tcl script excutes silentlyTcl 脚本中的 exec 命令静默执行
【发布时间】:2021-01-28 12:16:52
【问题描述】:

我想在 tcl 脚本中执行以下命令。该命令与特定工具相关。

exec tool cut Netlists/$::env(DESIGN_NAME).netlist.v

在运行 tcl 脚本时执行上述命令时,其相应的输出不会显示在终端上。

当我尝试在 tcl shell 中运行这个命令时,它工作正常。

有没有办法在终端打印结果?

【问题讨论】:

  • 它在 Tcl shell 中工作,因为当 tclsh 交互操作时,它通过打印它执行的命令的结果是“有用的”。除非有命令,否则非交互式脚本执行不会产生输出。

标签: bash tcl tclsh


【解决方案1】:

如果您希望将输出定向到终端,则需要添加重定向(否则输出将成为exec 命令的 Tcl 结果)。这是通过附加 >@stdout 2>@stderr 来完成的(您通常希望重定向输出和错误流)。

exec tool cut Netlists/$::env(DESIGN_NAME).netlist.v >@stdout 2>@stderr

如果您要经常这样做,那么有一个辅助程序会有所帮助:

proc tool {args} {
    # You might do other things here, like logging what command was actually called
    exec tool {*}$args >@stdout 2>@stderr
}

tool cut Netlists/$::env(DESIGN_NAME).netlist.v

【讨论】:

  • 在简单的情况下,puts [exec tool cut Netlists/$::env(DESIGN_NAME).netlist.v] 就足够了。
  • 感谢@Donal Fellows,重定向对我有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多