在tcsh中生成序列号列表

时间:2010-10-13 07:34:31

标签: scripting shell csh tcsh

我一直在努力寻找一种解决方法来在tcsh中广泛定义序列号列表,即。而不是做:

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

我想做这样的事情(知道它不起作用)

i = ( 1..10 )

这在foreach循环中特别有用(我知道我可以使用,只是试图寻找替代方案)。

环顾四周,我发现了这个:

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

发现here。他们说它将生成一个以1开头的数字列表,增量为1,以9结尾。

我试了一下,但没办法。显然seq不是命令。它存在还是普遍错误?

还有其他想法吗?

1 个答案:

答案 0 :(得分:6)

seq肯定存在,但可能不在您的系统上,因为它不在POSIX标准中。我刚注意到你的命令中有两个错误。以下是否有效?

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

请注意遗漏美元符号以及seq命令周围的额外反推。

如果仍然不起作用,您可以使用seq模仿awk

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

更新

另外两种选择:

  1. 如果你的机器没有seq,它可能有jot(BSD / OSX):

    foreach number ( `jot 9` )
    

    之前我从未听说过jot,但对类固醇看起来像seq

  2. 使用内置大括号扩展的bash

    for number in {1..9}