【Tcl/tk】多个参数调用之eval的用法

    自学Tcl/tk已有半年余,近期终于完成了一个图形化的程序,用于人机交互,并实现自动化监控管理。在编写过程中,遇到了很多意想不到的困难,在此,大致记录一下,权作备忘。


先来看看eval命令的定义:


Eval是用于创造和运行脚本的通用构造。它接受任意多个参数,把它们用分隔符串接起来,然后把串接的结果作为一个脚本处理。


例如,用tcl调用一个外部程序example.exe,我们通常的做法是直接输入命令:

exec example.exe


此时解释器会直接返回外部程序的运行结果(如果有返回值的话)。

可以很容易的将返回值保存到一个变量,例如:

set a [exec example.exe]


此时变量a即是外部程序运行结果。


但是,在大多数情况下,外部程序需要接更多的参数用于控制,此时直接用exec+程序名+参数会得到解释器报错的提示。此时,有两种做法:

  1. 将程序名和参数合并写入到一个字符串Var_String, 运行exec $Var_String;但是此种做法限制了参数的变换,实际使用中不方便。除非参数本身就不会变换。

  2. 使用eval命令,将所有可能用的参数串接起来,例如:

    eval exec example.exe A B C D

    上述A B  C D等等是可用的任意参数。也可指定变量,用$A等取出。此时就显得灵活多了。


    但是,需要注意的是。Tcl编程在结合上下文时,要灵活掌握“ ”、[ ]、{ }的使用。如果使用eval命令报错,不妨检查一下是否选用了合适的括号。

你可能感兴趣的:(【Tcl/tk】多个参数调用之eval的用法)