如何在csh的foreach循环中添加循环计数器

11
在CSH的foreach循环或for循环中,我如何添加一个循环迭代器或计数器,其步长为20,范围从10增加到1000?
类似于foreach i(1..20..5)for (i=1;i<20;i++)这样的语句。
3个回答

14

如果你有seq命令,你可以使用:

foreach i (`seq 1 5 20`)
  ... body ...
end

如果您没有seq,这里是基于@csj答案的一个版本:

@ i = 1
while ($i <= 20)
  ... body ...
  @ i += 5
end

或者,对于BSD和OS X:jot - 1 20 5 - Dennis Williamson

2

我在网上找到的任何文档似乎都表明没有for循环可用。但是,可以使用while循环。我实际上不知道csh,因此以下内容是根据我所读的大致估计:

set i = 10
while ($i <= 1000)
    # commands...
    set i = $i + 20
end

2
实际上,它应该是 @ i = 1@ i = $i + 1 - Dennis Williamson
@Dennis 感谢您的语法纠正。至于数值,问题要求计数器从10到1000,步长为20。因此,循环的初始值为10,每次加20。 - csj
csh的循环称为foreach。实际上,如果您在谷歌搜索框中输入“csh for”,它会显示foreach作为第一个选项。 - shellter

0

或者您可以使用表达式expr。以下内容适用于我(在tcsh中,但csh应该是一样的):

% set n=0
% foreach x (`ls $A*`)
foreach? set n=`expr $n + 1`
foreach? echo $n
foreach? end

输出结果为 1 2 3 4 等等


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接