lsearch ?options? list pattern
查看列表是否包含匹配指定pattern的元素。如果包含,则返回第一个匹配的元素的索引,如果没有则返回-1。选项options用于指定列表中的元素与pattern的匹配方式。选项可以分为几种类型。
匹配模式选项
如果没有指定以下任何选项,则默认为-glob模式。如果指定了多个匹配模式,则给出的最后一个匹配模式生效。
选项 | 说明 |
-exact | Pattern被视为文本字符串,用于对每个列表元素进行精确的相等性比较。 |
-glob | Pattern被视为glob-style的模式,用于对每个列表元素使用与string match命令相同的规则进行匹配。 |
-regexp | Pattern被视为正则表达式,用于对每个列表元素使用与re_syntax命令相同的规则进行匹配。 |
-sorted | 如果指定了这个选项,则认为列表中的元素是按顺序排列的。lsearch将使用二分法来搜索列表。如果没有指定其他选项,则列表中元素按ascii的顺序递增排序,这个选项与-glob和-regexp是互斥的。当指定-all或-not选项时,与-exact完全相同。 |
通用修饰选项
以下选项可以与所有匹配模式选项一起使用。
选项 | 说明 |
-all | 返回包含所有匹配的元素的索引的列表,如果同时指定了-inline,则包含所有匹配的元素值的列表。如果返回索引,则索引将按数字顺序排列。如果返回元素值,则按列表中值的顺序排列。 |
-inline | 返回匹配的值,而不是索引。如果没有匹配的值,则返回空字符串。如果同时指定了-all,则包含所有匹配的元素值的列表。 |
-not | 返回第一个不匹配的元素的索引,可与-all、-inline选项一起使用,返回所有不匹配的索引或元素值的列表。 |
-start index | 从索引index开始搜索列表。索引值index的解析与lindex命令相同,支持string index。 |
内容描述选项
以下选项用于描述以何种方式解释搜索的列表中的元素。这些选项只有与-exact或-sorted选项一起使用时才有效。如果指定了多个,则指定的最后一个生效。如果不指定则默认为-ascii。
选项 | 说明 |
-ascii | 列表元素将作为Unicode字符串进行比较。 |
-dictionary | 列表元素将使用字典样式的比较进行比较。只有在使用-sorted选项时,才与-ascii有实际的区别。 because values are only dictionary-equal when exactly equal. |
-integer | 列表元素将作为整数值进行比较。 |
-nocase | 列表元素不区分大小写,只与-ascii组合有效果。 |
-real | 列表元素将作为浮点值进行比较。 |
列表排序选项
以下选项只在与-sorted选项一起使用时有效。如果指定了多个,则指定的最后一个生效。默认是-increasing。
选项 | 说明 |
-decreasing | 列表元素降序排列。 |
-increasing | 列表元素升序排列。 |
-bisect | 对于递增列表,返回元素小于或等于pattern的最后一个索引。对于递减列表,返回元素大于或等于pattern的最后一个索引。如果pattern位于第一个元素之前或列表为空,则返回-1。此选项不能与-all或-not选项一起使用。 |
嵌套列表选项
以下选项用于搜索列表中的列表,可以与其他任何选项一起使用。
选项 | 说明 |
-index indexList | indexList为索引的路径,与lindex命令的索引处理方式相同。 |
-subindices | 如果给出此选项,则此命令的索引结果将是找到的元素在整个列表中的完整路径。除非还指定了-index选项,否则此选项无效。 |