web-dev-qa-db-ja.com

cshのforeachにループカウンターを追加する方法

CSH foreachループまたはforループで、20のステップで10から1000に増加するループイテレーターまたはカウンターを追加するにはどうすればよいですか?

foreach i (1..20..5)またはfor (i=1;i<20;i++)のようなもの。

9
SkypeMeSM

seqコマンドがある場合は、次を使用できます。

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

seqがない場合は、@ csjの回答に基づいたバージョンを次に示します。

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

私がオンラインで見つけたドキュメントは、forループが利用できないことを示しているようです。ただし、whileループは使用できます。私は実際にはcshを知らないので、以下は私が読んだものに基づいた概算です。

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

または、exprを使用できます。以下は私のために働いた(tcshではあるがcshは同じでなければならない):

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

出力は12 34などです

0
Tim V