Диапазон с начальным нулем в bash

Как добавить начальный ноль в диапазон bash?
Например, мне нужен цикл 01,02,03,.., 29,30
Как реализовать это с помощью bash?

Ответы

Ответ 1

будет работать другой трюк seq:

 seq -w 30

если вы проверите man-страницу, вы увидите, что параметр -w соответствует вашим требованиям:

-w, --equal-width
              equalize width by padding with leading zeroes

Ответ 2

В последних версиях bash вы можете:

echo {01..30}

Вывод:

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Или, если он должен быть разделен запятыми:

echo {01..30} | tr ' ' ','

Что также может быть достигнуто с расширением параметра:

a=$(echo {01..30})
echo ${a// /,}

Вывод:

01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30

Ответ 3

Вы можете использовать опцию seq format:

seq -f "%02g" 30

Ответ 4

"Чистый bash" способ будет примерно таким:

echo {0..2}{0..9}

Это даст вам следующее:

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

Удаление первого 00 и добавление последних 30 не слишком сложно!

Ответ 5

Это работает:

printf " %02d" $(seq 1 30)