我试图在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"
}