使用Linux“foreach”命令构建列表迭代器

编程时foreach命令实现了一个循环,其中循环变量呈现来自一个或多个列表的值。 在最简单的情况下,有一个循环变量varname和一个list list ,它是要分配给varname的值列表。 body参数是一个Tcl脚本。 对于列表中的每个元素(从第一个到最后一个), foreach将元素的内容赋值varname ,就好像lindex命令已经用于提取元素一样,然后调用Tcl解释器来执行主体

概要

foreach varname list body
foreach varlist1 list1varlist2 list2 ...身体

讨论

在一般情况下,可以有多个值列表(例如, list1list2 ),并且每个值列表可以与一个循环变量列表(例如, varlist1varlist2 )相关联。 在循环的每次迭代期间,每个varlist的变量都会从相应的列表中分配连续的值。 每个列表中的值按从头到尾的顺序使用,每个值只用一次。 循环迭代的总数足够大,可以用尽所有值列表中的所有值。 如果每个迭代中值列表中的每个循环变量都没有包含足够的元素,则会为缺少的元素使用空值。

breakcontinue语句可以在body中调用,效果与for命令相同。 结果返回一个空字符串。

例子

以下循环使用ij作为循环变量来遍历单个列表的元素对。

set x {} foreach {ij} {abcdef} {lappend x $ j $ i}#x的值是“badcfe”#循环有3次迭代。

下一个循环使用ij并行迭代两个列表。

set x {} foreach i {abc} j {defg} {lappend x $ i $ j}#x的值是“adbecf {} g”#循环有4次迭代。

下面的例子将这两种形式组合在一起。

set x {} foreach i {abc} {jk} {defg} {lappend x $ i $ j $ k}#x的值是“adebfgc {} {}”#循环有3次迭代。

笔记

几个相关的命令与foreach一起工作,包括:

由于Linux发行版和内核版本级别不同,请使用man命令( %man )查看特定计算机上特定使用的命令。