Bash:在n位数字符串中格式化数字

时间:2015-07-27 20:53:58

标签: bash string-formatting

我是一个bash新手。我想以x数字格式将数字1回显到n。例如,让我们考虑n=3:5应该变为005,13应该变为013,110应该保持为110.

实现这一目标的一种方法是采用这种结构:

for i in $(seq 1 120)
do
   if [ "$i" -lt "10" ]
   then
      echo "00$i"
   elif [ "$i" -gt "99" ]
   then
      echo "$i"
   else
      echo "0$i"
   fi
done

但它非常难看,并且在更改n(位数)的值时实际上并不灵活。我宁愿有一个只用n数字进行格式化的函数吗?是否已经内置了功能?如果没有,你能帮我创建这样的功能吗?

1 个答案:

答案 0 :(得分:6)

使用printf

for i in {1..120} ; do
    printf '%03d\n' $i
done
  • %启动格式字符串
  • d表示整数
  • 3表示 length = 3
  • 0表示零填充
  • \n是换行符