Когда я использую следующее, я получаю ожидаемый результат:
$ echo {8..10}
8 9 10
Как я могу использовать это расширение скобки простым способом, чтобы получить следующий результат?
$ echo {8..10}
08 09 10
Я теперь, что это может быть получено с помощью seq
(не пытался), но это не то, что я ищу.
Полезной информацией может быть то, что я ограничен этой версией bash. (Если у вас есть zsh
решение, но нет bash
решения, пожалуйста, поделитесь)
$ bash -version
GNU bash, version 3.2.51(1)-release (x86_64-suse-linux-gnu)
bash
arithmetic
brace-expansion
Бернхард
источник
источник
Ответы:
Префикс первого числа с,
0
чтобы каждый термин имел одинаковую ширину.Из раздела man-страницы bash по расширению Brace:
Также обратите внимание, что вы можете использовать
seq
эту-w
опцию для выравнивания ширины, добавляя начальные нули:Если вы хотите больше контроля, вы можете даже указать формат стиля printf:
источник
echo {08..10}
решении, оно появилось только для bash версии 4 и выше.perl
) ведущий ноль указывает восьмеричное число. Я предполагаю, что не часто вы хотите последовательность восьмеричных чисел ...seq
с помощью-w
переключателя следующим образом:seq -w 003
производит числа 001, 002 и 003.foo_00001.someextension
где почти все контексты сортировки обеспечивают нормальное упорядочение.если вы используете printf
это заставит быть 2 символа и добавит начальный 0. В случае, если вам нужно 3 цифры, вы можете изменить на «% .3d».
источник
printf
решении, но на самом деле это не делает это проще. Я надеюсь, что есть какой-то скрытый трюк, который делает работу :)Используйте диапазон, который начинается с постоянной цифры и удалите эту цифру:
или без использования внешней команды:
Для использования в цикле for:
хотя для этого случая цикл while будет более понятным и работает в любой оболочке POSIX:
источник
for
равно нуждался в петле.У меня та же версия bash исходного постера (
GNU bash, version 3.2.51(1)-release
), и{08..12}
она не работает для меня, но следующее работает:Это немного более утомительно, но работает на OP версии Bash (и более поздние версии, я бы предположил).
источник
Для справки, я думаю, что автоматическая фиксированная ширина происходит только с последней версией bash:
источник
нули, ini и fin - переменные, так что легко, вы пишете только те нули, которые вы говорите в «нулях», чтобы ini к fin без проблем;)
источник