我需要检查过程func1
是否存在,并且1
中是否存在0
(如果不存在variable proc_ststus_var
)。我该怎么办?
答案 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" ];