【发布时间】:2013-08-29 21:17:15
【问题描述】:
我有一个基本数字 for 循环,它在每次迭代中将变量 num 递增 1...
for (( num=1; num<=5; num++ ))
do
echo $num
done
哪些输出:
1
2
3
4
5
我正在尝试让它产生输出(在 $num 之前添加前导零):
01
02
03
04
05
不做:
echo 0$num
【问题讨论】:
-
使用适当格式的
printf。 -
printf from bash 有很多不好的效果,我更喜欢使用 awk,如下所示:"num=$(echo $num | awk '{printf("%02d", $1)}'"
-
@binogure 请注意:Awk 在不同的系统上具有不同的行为。有 mawk、gawk、awk、nawk 等。我尽量不推荐它,因为我似乎只能在我正在写它的计算机上测试它。 Perl/Ruby 更兼容。
-
printf '%s\n' {01..05}. -
stackoverflow.com/a/18469460/188159 应该设置为答案。