info procs ?pattern? 将为您提供您想要的基本构建块:
% proc foo {} {}
% info procs foo
foo
% info procs bar
%
Run Code Online (Sandbox Code Playgroud)
就像是:
% proc procExists p {
return uplevel 1 [expr {[llength [info procs $p]] > 0}]
}
% procExists foo
1
% procExists bar
0
Run Code Online (Sandbox Code Playgroud)
请注意,如果您检查具有某些元字符 ( *, ?) 的过程是否存在,则info commands可能会返回错误的结果。
因此,要检查过程是否存在,请使用namespace which或检查以下结果info commands:
if {[llength [namespace which $cmdname]]} {
...
}
if {$cmdname in [info commands $cmdname]} {
...
}
Run Code Online (Sandbox Code Playgroud)
Tclunknown使用了这种namespace which方法。