Если под статическим и динамическим вы подразумеваете, что хотите использовать переменную ширины, вы можете сделать это:
$ padtowidth=3
$ for i in 0 {8..11} {98..101}; do printf "%0*d\n" $padtowidth $i; done
000
008
009
010
011
098
099
100
101
Звездочка заменяется значением переменной, которой она соответствует в списке аргументов ($padtowidth
в данном случае).
В противном случае единственная причина, по которой ваш пример не работает, это то, что вы используете «2» (возможно, как если бы это был максимальный отступ для применения), когда оно должно быть «3» (как в моем примере), так как это значение итоговая общая ширина (не ширина только для пэдов).