Bash:用数字计数变量对数字进行零填充

Bash: Zero-pad a number with a variable for the digit count

我需要在 Bash 的循环中对数字序列进行零填充。我知道如何使用

seq -f "%03g" 5

或类似的printf方法,也

for index in {003..006}

我做的问题没有找到答案是我需要数字的数量是一个变量:

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

会不会return出错

seq: das Format »%0“ endet mit %

我还没有找到任何方法来在格式字符串中插入变量,也没有找到任何其他方法来生成零填充序列,其中位数来自(用户提供的)变量。

  1. 当变量名 (CNT) 后跟不被解释为变量名一部分的字符 (d) 时,应将其括在花括号中,
  2. seq不支持%d,你应该使用%g
$ read -r CNT
$ seq -f "%0${CNT}g" 3 6
00003
00004
00005
00006

我想你想要 seq,但你知道 printf 中的 * 运算符吗?

printf "%0*d\n" ${CNT} 5