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 %
我还没有找到任何方法来在格式字符串中插入变量,也没有找到任何其他方法来生成零填充序列,其中位数来自(用户提供的)变量。
- 当变量名 (
CNT
) 后跟不被解释为变量名一部分的字符 (d
) 时,应将其括在花括号中,
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
我需要在 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 %
我还没有找到任何方法来在格式字符串中插入变量,也没有找到任何其他方法来生成零填充序列,其中位数来自(用户提供的)变量。
- 当变量名 (
CNT
) 后跟不被解释为变量名一部分的字符 (d
) 时,应将其括在花括号中, 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