3

私は、tcsh で連続番号のリストを広範囲に定義するための回避策を見つけようとしています。代わりに:

i = ( 1 2 3 4 5 6 8 9 10 )

私はこのようなことをしたいです(それがうまくいかないことを知っています)

i = ( 1..10 )

これは、foreach ループで特に役立ちます (代替手段を探すために while を使用できることはわかっています)。

周りを見回すと、こんなのが見つかりました:

foreach $number (`seq 1 1 9`)
...
end

ここでそれを見つけました。彼らは、1 で始まり、1 ずつ増えて 9 で終わる数字のリストを生成すると言っています。

試してみましたが、うまくいきませんでした。どうやら seq はコマンドではありません。それは存在しますか、それともこれは明らかに間違っていますか?

他のアイデアはありますか?

4

1 に答える 1

6

seq確かに存在しますが、POSIX 標準にないため、システム上にない可能性があります。コマンドに 2 つのエラーがあることに気付きました。以下は機能しますか?

foreach number ( `seq 1 9` )
    echo $number
end

ドル記号が省略され、コマンドの前後に余分なバッククォートがあることに注意してくださいseq

それでもうまくいかない場合は、次のようにエミュレートできseqますawk

foreach number ( `awk 'BEGIN { for (i=1; i<=9; i++) print i; exit }'` )

アップデート

さらに2つの選択肢:

  1. お使いのマシンにない場合は、seqある可能性がありますjot(BSD/OSX):

    foreach number ( `jot 9` )
    

    今まで聞いたことがありませんでしたが、ステロイドjotのようです。seq

  2. bash組み込みのブレース展開で使用します。

    for number in {1..9}
    
于 2010-10-13T08:07:11.177 に答える