如何执行set
命令而不在屏幕上打印输出?我想读取文件而不在屏幕上显示内容。
set a [open "giri.txt" r]
set b [read $ifile]
您所观察到的只是交互式Tcl shell 的标准行为:每个 Tcl 命令都返回一个结果值和一个返回码。如果 Tcl shell 是交互式的(即它的输入和输出流连接到一个终端),则在执行每个命令后,将打印命令返回的结果值的字符串表示形式,然后再次显示提示。如果 shell 不是交互式的,则不会打印任何结果,也不会显示任何提示。
(附带说明,这种行为在解释器中无处不在——各种 Unix shell、Python 和 Ruby 解释器做同样的事情。)
如果您想在交互式会话中禁止此类打印输出(有时会派上用场),实现此目的的一个简单方法是将您想要“静音”的命令与“静音”命令链接起来(生成一个其字符串的值表示是一个空字符串),例如:
set a [open "giri.txt" r]; list
这里,list
没有参数的命令返回的列表是一个空列表,其字符串表示是一个空字符串。在交互式 shell 中,这条命令链实际上不会输出任何内容。
值得重申的是,这种破解可能只需要在交互式会话中使用——不要在脚本中使用它。
在 Mentor ModelSim Tcl 中,可以执行以下操作:
quietly set answer 42
同样在导师 Questa:
help quietly
quiet 命令关闭指定命令的脚本回显。
您可以在交互式 tclsh 中将其关闭
set tcl_interactive false
但这也会关闭提示。