重击:将数字和变量的数字填入零填充

时间:2019-05-01 08:54:20

标签: bash sequence string-formatting

我需要在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 个答案:

答案 0 :(得分:2)

我认为您想要seq,但是您知道*中的printf运算符吗?

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

答案 1 :(得分:1)

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