Csh中能否像Tcl一样使用foreach遍历两个变量?
Csh中实现类似Tcl的双变量foreach遍历方法
csh的foreach语法只支持单个变量遍历列表,没法像Tcl那样直接写foreach a b ($test)这种多变量形式,你写的代码因为语法不符合规则所以报错。
下面是两种能实现相同效果的方法:
方法一:用while循环+shift处理临时数组
set test = (a 1 b 2) # 复制原数组到临时变量,避免修改原数据 set tmp = ($test) # 当临时数组元素数≥2时循环 while ($#tmp >= 2) # 取出前两个元素赋值给a和b set a = $tmp[1] set b = $tmp[2] echo $a echo $b # 移除临时数组的前两个元素 shift tmp shift tmp end
方法二:通过索引遍历数组
set test = (a 1 b 2) set len = $#test # 从索引1开始,每次步长为2遍历数组 for ((i=1; i <= len; i+=2)) set a = $test[$i] set b = $test[$i+1] echo $a echo $b end
这两种方法都能实现每次从数组中取出一对元素,模拟Tcl双变量foreach的遍历效果。
内容的提问来源于stack exchange,提问作者heyhey
相关产品推荐
相关产品推荐

