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 标准中。我刚刚注意到您的命令中有两个错误。下面的工作吗?

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}
    
于 2010-10-13T08:07:11.177 回答