在TCL中使用for each进行迭代



我试图在TCL

中迭代使用每个值输入

./a.sh value1,value2

.sh脚本中的

set var [lindex $argv 0]
set values [split $var ","]
foreach {set i 0} {$values} {
puts "iterated once $i"
}

我希望迭代发生两次,因为传递了两个值。但是它只迭代一次

请帮我解决这个问题

thanks in advance

foreach命令以其最简单的形式,接受一个变量名称、一个列表和一个脚本来为列表的每个元素运行。你经过的地方…在很多方面都很奇怪。看,这里有一个正确的方法:

set values [split $var ","]
foreach item $values {
puts "iterated: $item"
}

如果你想计数,你应该设置你自己的计数器:

set values [split $var ","]
foreach item $values {
set i [incr counter]
puts "iterated #$i: $item"
}

可以缩短为:

foreach item [split $var ","] {
puts "iterated #[incr counter]: $item"
}

最新更新