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
完成
您好,我是 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
完成