Csh echo foreach循环索引

时间:2016-03-27 14:32:46

标签: linux shell foreach csh

您好我是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了),论坛和其他堆栈溢出帖子也没多大帮助。

1 个答案:

答案 0 :(得分:1)

您需要使用手动增加的单独变量:

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来编写脚本。它有很多问题和局限。