rea*_*dit 29 bash shell output-formatting
例如,我想从001到100计数.意味着零缓冲区将从2,1开始,然后在达到100或更多时最终为0.
例如:001 002 ... 010 011 ... 098 099 100
如果数字与printf"%02d"$ i有预定义数量的零,我可以这样做.但这是静态的而不是动态的,在我的例子中不起作用.
mob*_*mob 33
如果您的系统有,请尝试seq
使用-w
(--equal-width
)选项:
$ seq -s, -w 1 10
01,02,03,04,05,06,07,08,09,10
$ for i in `seq -w 95 105` ; do echo -n " $i" ; done
095 096 097 098 099 100 101 102 103 104 105
Run Code Online (Sandbox Code Playgroud)
Pau*_*ce. 33
如果静态与动态意味着您希望能够使用变量作为宽度,则可以执行以下操作:
$ 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
Run Code Online (Sandbox Code Playgroud)
星号由参数列表中对应的变量值($padtowidth
在本例中)替换.
否则,你的例子不起作用的唯一原因是你应该使用"2"(也许好像它是应用的最大填充),当它应该是"3"(如我的例子中),因为该值是结果总数宽度(不是仅限焊盘的宽度).
Joh*_*itb 12
在Bash版本4(使用bash -version)中,您可以使用大括号扩展.把一个0
或者限制之前强制通过零填充数字
echo {01..100} # 001 002 003 ...
echo {03..100..3} # 003 006 009 ...
Run Code Online (Sandbox Code Playgroud)
#!/bin/bash
max=100;
for ((i=1;i<=$max;i++)); do
printf "%0*d\n" ${#max} $i
done
Run Code Online (Sandbox Code Playgroud)
上面的代码将根据max/terminal值包含的位数,使用正确的0数自动填充数字.您需要做的就是更改max
变量,它将处理其余的变量.
例子:
01
02
03
04
05
06
07
08
09
10
Run Code Online (Sandbox Code Playgroud)
001
002
003
004
005
006
...
097
098
099
100
Run Code Online (Sandbox Code Playgroud)
0001
0002
0003
0004
0005
0006
...
0997
0998
0999
1000
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
39961 次 |
最近记录: |