如何在不在屏幕上打印输出的情况下执行set
命令?我想在不显示屏幕内容的情况下阅读文件。
set a [open "giri.txt" r]
set b [read $ifile]
答案 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