【发布时间】:2011-04-18 09:30:55
【问题描述】:
所以基本上在我的 tcl 脚本中,我生成了一行我必须执行的 tcl 代码(即,我在运行时提出了这条指令)。一旦我有了 tcl 指令,例如说“hello world $test_var”。如何使用 tcl 执行此操作?
我是使用 eval 命令还是什么?
【问题讨论】:
标签: tcl evaluation
所以基本上在我的 tcl 脚本中,我生成了一行我必须执行的 tcl 代码(即,我在运行时提出了这条指令)。一旦我有了 tcl 指令,例如说“hello world $test_var”。如何使用 tcl 执行此操作?
我是使用 eval 命令还是什么?
【问题讨论】:
标签: tcl evaluation
eval 命令是执行此操作的合理方法,但您可能要考虑改用catch,因为这将捕获在评估生成的代码期间发现的任何问题,例如:
# Generate the code somehow
set variable {puts "hello word $test_var"}
# Execute and trap problems
if {[catch $variable resultMsg]} {
# An error (or other exception) happened
puts stderr "BOOM, Error! $resultMsg"
}
【讨论】:
在较新版本的 Tcl 中,您可以使用 {*} 语法,而不是使用效果很好的 [eval]。 例如:
set cmd "puts"
lappend cmd "abcd ef"
{*}$cmd
请注意,使用列表命令来构建命令是一个好习惯,这样您就不会遇到引用问题。
【讨论】:
恐怕除了使用eval 命令之外,您没有其他合理的选择,例如:
set variable {puts "hello world $test_var"}
eval $variable
【讨论】:
eval 的情况。不幸的是,我现在不记得确切的问题。它与正确的引用有关,据我所知,它甚至是嵌套的eval(但最后它工作正常)。