列表不';t在Tcl中不包含自己的成员

列表不';t在Tcl中不包含自己的成员,tcl,Tcl,我有一个包含一个成员的列表,该成员是字符串XXDDR0\u MA[12]。当我在列表中搜索该字符串时(使用lsearch),我得到的结果是列表中不包含该字符串。我甚至在搜索列表中的成员时得到: tcl> set nets_names {<cmd_stichstudy1>XXDDR0_MA[12]} tcl> lsearch $nets_names [lindex $nets_names 0] -1 tcl>设置网络名称 {XXDDR0_MA[12]} tcl>L搜

我有一个包含一个成员的列表,该成员是字符串
XXDDR0\u MA[12]
。当我在列表中搜索该字符串时(使用
lsearch
),我得到的结果是列表中不包含该字符串。我甚至在搜索列表中的成员时得到:

tcl> set nets_names

{<cmd_stichstudy1>XXDDR0_MA[12]}

tcl> lsearch $nets_names [lindex $nets_names 0]

-1
tcl>设置网络名称
{XXDDR0_MA[12]}
tcl>L搜索$nets_名称[lindex$nets_名称0]
-1
为什么会发生这种情况?

如果您使用它,它将按照您想要的方式工作

% set nets_names {<cmd_stichstudy1>XXDDR0_MA[12]}
<cmd_stichstudy1>XXDDR0_MA[12]
% lsearch -exact $nets_names [lindex $nets_names 0]
0
%
%set nets\u names{XXDDR0\u MA[12]}
XXDDR0_MA[12]
%L搜索-精确的$nets_名称[lindex$nets_名称0]
0
%

lsearch
有一个不幸的默认使用属性

引用手册:

如果省略所有匹配样式选项,则默认匹配样式为-glob


因此,请始终将
-exact
传递给
lsearch
,除非您确实希望
-glob

仅扩展正确的答案,因为搜索字符串包含方括号,带有glob样式匹配,
lsearch
正在尝试匹配
XXDDR0\u MA1
XXDDR0\u MA2
——在