如何在TCL中保持命令安静?

如何在TCL中保持命令安静?,tcl,Tcl,如何执行set命令而不在屏幕上打印输出?我想在不在屏幕上显示内容的情况下读取文件 set a [open "giri.txt" r] set b [read $ifile] 您观察到的只是交互式Tcl shell的标准行为:每个Tcl命令都返回一个结果值和一个返回代码。如果Tcl shell是交互式的(即其输入和输出流连接到终端),则在执行每个命令后,将打印命令返回的结果值的字符串表示形式,然后再次显示提示。如果shell不是交互式的,则不会打印结果,也不会显示提示 (另一方面,这种行为在解释

如何执行
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中,此命令链实际上不会输出任何内容


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

您可以在交互式Tcsh中关闭它

set tcl_interactive false

但这也会关闭提示。

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

quietly set answer 42
同样在Mentor Questa:

help quietly
静默命令关闭指定命令的转录本回显


把它放在一个脚本中,它只显示在所讨论的交互式解释器中;最后无用的
列表
将被优化器转换为
nop