Я изучаю сценарии оболочки из устаревшего учебника, и мне кажется, было бы очень полезно иметь программу, которая просто возвращает строку чисел, разделенных пробелами, что-то вроде
$ range 10 20
10 11 12 13 14 15 16 17 18 19 20
Затем, если вы делаете сценарий оболочки, вы можете иметь
for i in `range 10 20`; do some stuff with numbers in that range;done
такая вещь существует, или мне нужно написать это самому?
range
наseq
в вашем примере. по умолчанию используется разделитель новой строки с пробелами:seq -s " " 10 20
for
или даже любая общая команда, которая разделяет аргументы, если вы не установили IFS по-другому.seq
как это не указано в POSIX.Ответы:
seq
является частью coreutils.Выход:
Если вы предоставляете только 2 аргумента
seq
, приращение составляет 1:источник
sed
также есть хорошие опции, такие как-s
установить разделитель или-w
определить ширину. И вы можете предоставить приращение:seq -w -s ", " 0 5 20
результаты в 00, 05, 10, 15, 20 .seq
?seq 10 20
также может быть простой пример, который стоит добавить;)Достаточно ли Bash?
Вы можете сделать много вещей с расширением скобки . Bash 4 также поддерживает мягкие диапазоны, например
{01..20}
.Обратите внимание, что Bash не считается переносимым и не является стандартной утилитой Unix. Хотя вы можете с уверенностью предположить, что он установлен в большинстве современных Linux, не используйте его в сценарии, который планируется запустить на всех типах Unix-подобных машин.
источник
seq
. Использование же, как в вашем примере:seq -s " " 10 20
.-s
Параметр необходим, так как по умолчанию значения отделены друг от друга\n
.seq
это утилита GNU, и, следовательно, не «стандартная программа Unix»for i in {001..010}; ... ; done
и он будет нуля номер до 3 цифр.Если вы хотите что-то строго переносимое (то есть это не зависит от конкретных расширений bash или команд, не указанных в POSIX)
источник
/dev/null
или< /dev/null
к этому?If the awk program contains no actions and no patterns, but is otherwise a valid awk program, standard input and any file operands shall not be read and awk shall exit with a return status of zero.
До 10.7 не было
seq
на Mac OS X, ноjot
, из-за наследия BSD.Пример:
источник
Используйте
for
циклисточник
Вы можете использовать
seq
, или если у вас его нет, вы можете написать это самостоятельно:Использование:
Или:
источник
Ради полноты здесь кое-что, что будет работать с некоторыми более старыми вариантами Unix (если на них установлен Perl). Не очень элегантно.
источник