我喜欢在shell中包装TCL过程,以便我可以直接在BASH运行一些TCL例程。这是我的TCL脚本文件tools.tcl:
1 proc disassemble {file_name} {
2 set f [open $file_name r]
3 set data [read -nonewline $f]
4 close $f
5 tcl::unsupported::disassemble script $data
6 }
7
8 if {$::argc == 0} {
9 return
10 }
11
12 [lindex $::argv 0] [lrange $::argv 1 end]
我喜欢这样运行:tclsh tools.tcl disassemble 1.tcl
但我没有看到任何输出。我添加了一个调试转储,将$ data放在第5行之前,它正确地转储1.tcl。
在tcl :: unsupported :: disassemble中是否有重定向?
答案 0 :(得分:2)
尝试
puts [tcl::unsupported::disassemble script $data]
disassemble
命令将其输出作为文本数据返回。在控制台中,您可以直接看到它,但是如果在正在运行的脚本中调用的过程中调用它,则无法看到它。