嗨,我是csh中的shell脚本新手,我需要一个烦人的问题的帮助。取下面的代码:
set s = ("one" "two" "three" "four")
foreach i (${s})
echo $i"-" [what do I put here to get the index?]
end
这就产生了
one-
two-
three-
four-
不过,我也希望打印出循环计数器索引,因此:
one-1
two-2
three-3
four-4
抱歉,如果这个问题真的是基本的,但我没有太多的经验,在shell脚本(更不用说csh)和论坛和其他堆栈溢出的职位没有太大帮助。
最佳答案
您需要使用一个单独的变量,手动递增:
set s = ("one" "two" "three" "four")
set i = 0
foreach v ( $s )
echo "$v - $i"
@ i = $i + 1
# Also works
#@ i++
end
您可以使用特殊的
@
命令进行算术运算(由于这是一个命令而不是“语法”,因此@
和i
之间的空格是必需的,因此您可以在这里实际使用任何表达式,而不仅仅是算术表达式)。因为
i
(表示“迭代”)是这个的标准名称,所以我将您的$i
重命名为$v
表示“值”。最后一点,如果可以避免的话,您可能不想使用
csh
来编写脚本。它有许多问题和局限性。关于linux - Csh echo foreach循环索引,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36248510/