嗨,我是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/

10-11 18:29