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

时间:2013-07-26 15:52:30

标签: tcl

如何在不在屏幕上打印输出的情况下执行set命令?我想在不显示屏幕内容的情况下阅读文件。

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

3 个答案:

答案 0 :(得分:9)

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

(另一方面,这种行为在解释器中无处不在 - 各种Unix shell,Python和Ruby解释器都做同样的事情。)

如果你想在交互式会话中禁止这样的打印输出(不时派上用场),实现这一目的的一个简单方法就是用“静音”命令链接你想要“沉默”的命令(产生一个其字符串表示为空字符串的值,例如:

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

这里,没有参数的list命令返回的列表是一个空列表,其字符串表示为空字符串。在交互式shell中,这一系列命令几乎不输出任何内容。

需要重申的是,交互式会话中可能只需要这样的黑客攻击 - 不要在脚本中使用它。

答案 1 :(得分:3)

您可以在交互式tclsh

中将其关闭
set tcl_interactive false

但这也会关闭提示。

答案 2 :(得分:2)

在Mentor ModelSim Tcl中可以这样做:

quietly set answer 42