TCL。如何检查程序是否存在?

时间:2014-04-14 12:55:14

标签: tcl

我需要检查过程func1是否存在,并且1中是否存在0(如果不存在variable proc_ststus_var)。我该怎么办?

3 个答案:

答案 0 :(得分:6)

info procs ?pattern?将为您提供所需的基本构建块:

% proc foo {} {}
% info procs foo
foo
% info procs bar
% 

类似的东西:

% proc procExists p {
   return uplevel 1 [expr {[llength [info procs $p]] > 0}]
}
% procExists foo
1
% procExists bar
0

答案 1 :(得分:4)

请注意,如果您检查某个元字符(*?)的过程是否存在,info commands可能会返回错误的结果。

因此,要检查某个程序是否存在,请使用namespace which或检查info commands的结果:

if {[llength [namespace which $cmdname]]} {
    ...
}
if {$cmdname in [info commands $cmdname]} {
    ...
}

Tcl的unknown使用namespace which方法。

答案 2 :(得分:1)

你可以试试像

这样的东西
set commandExists [ info commands "mycommandname" ];
相关问题