我需要在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 %
我还没有找到以格式字符串插入变量的任何方法,也没有找到其他方法来产生零填充序列(其中数字位数来自(用户提供的)变量。)
答案 0 :(得分:2)
我认为您想要seq
,但是您知道*
中的printf
运算符吗?
printf "%0*d\n" ${CNT} 5
答案 1 :(得分:1)
CNT
)后跟一个字符(d
)时,应将其用大括号括起来,该字符不应被解释为其名称的一部分,seq
不支持%d
,您应该使用%g
。$ read -r CNT
$ seq -f "%0${CNT}g" 3 6
00003
00004
00005
00006