您好我是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了),论坛和其他堆栈溢出帖子也没多大帮助。
答案 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
来编写脚本。它有很多问题和局限。