csh echo foreach 循环索引

Csh echo foreach loop index

您好,我是 shell csh 脚本的新手,我需要帮助解决一个恼人的问题。取下面的代码:

   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 之间的 space 是 强制性的 因为这是一个命令,而不是 "syntax",你实际上可以在这里使用 任何 表达式,而不仅仅是算术)。

由于 i(代表 "iteration")是这个的标准名称,我将你的 $i 重命名为 $v,代表 "value"。

最后一点,如果可以避免,您可能不想使用 csh 编写脚本。它有很多问题和局限性。

For var in One-1 Two-2 Three-3 Four-4

回声 $var

完成