Bash: Zero-pad число с переменной для подсчета цифр - PullRequest
0 голосов
/ 01 мая 2019

Мне нужно обнулить последовательность чисел в цикле в Bash.Я знаю, как это сделать с помощью

seq -f "%03g" 5

или аналогичного подхода printf, а также

for index in {003..006}

Проблема, которую я сделал не , найти ответ на эточто мне нужно, чтобы число цифр было переменной:

read CNT
seq -f "%0$CNTd" 3 6

вернет ошибку

seq: das Format »%0“ endet mit %

Я не нашел способа вставить переменную в строку формата или любую другуюДругой способ получить последовательность с нулевым заполнением, в которой количество цифр происходит из (предоставленной пользователем) переменной.

Ответы [ 2 ]

2 голосов
/ 01 мая 2019

Я думаю, вы хотите seq, но знаете ли вы оператор * в printf?

printf "%0*d\n" ${CNT} 5
1 голос
/ 01 мая 2019
  1. Имя переменной (CNT) должно быть заключено в фигурные скобки, когда за ним следует символ (d), который не должен интерпретироваться как часть его имени,
  2. seq не поддерживает %d, вы должны использовать %g.
$ read -r CNT
$ seq -f "%0${CNT}g" 3 6
00003
00004
00005
00006
...