10

如何执行set命令而不在屏幕上打印输出?我想读取文件而不在屏幕上显示内容。

set a [open "giri.txt" r]
set b [read $ifile]
4

3 回答 3

13

您所观察到的只是交互式Tcl shell 的标准行为:每个 Tcl 命令都返回一个结果值和一个返回码。如果 Tcl shell 是交互式的(即它的输入和输出流连接到一个终端),则在执行每个命令后,将打印命令返回的结果值的字符串表示形式,然后再次显示提示。如果 shell 不是交互式的,则不会打印任何结果,也不会显示任何提示。

(附带说明,这种行为在解释器中无处不在——各种 Unix shell、Python 和 Ruby 解释器做同样的事情。)

如果您想在交互式会话中禁止此类打印输出(有时会派上用场),实现此目的的一个简单方法是将您想要“静音”的命令与“静音”命令链接起来(生成一个其字符串的值表示是一个空字符串),例如:

set a [open "giri.txt" r]; list

这里,list没有参数的命令返回的列表是一个空列表,其字符串表示是一个空字符串。在交互式 shell 中,这条命令链实际上不会输出任何内容。

值得重申的是,这种破解可能只需要在交互式会话中使用——不要在脚本中使用它。

于 2013-07-26T16:18:42.267 回答
4

在 Mentor ModelSim Tcl 中,可以执行以下操作:

quietly set answer 42

同样在导师 Questa:

help quietly

quiet 命令关闭指定命令的脚本回显。

于 2015-03-03T07:53:02.400 回答
3

您可以在交互式 tclsh 中将其关闭

set tcl_interactive false

但这也会关闭提示。

于 2013-07-27T11:19:06.123 回答