Генерация списков последовательных номеров в tcsh - PullRequest
3 голосов
/ 13 октября 2010

Я пытался найти обходной путь к определению списков последовательных чисел в 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 не команда. Это существует или это просто неправильно?

Есть еще идеи?

1 Ответ

6 голосов
/ 13 октября 2010

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}
    
...