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

Bash: Formating numbers in a n digit string

我是 bash 新手。我想以 n 数字格式回显数字 1 到 x。例如,让我们考虑 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 数字进行格式化的函数?是否已经有内置功能?如果没有你能帮我创建这样的功能吗?

使用printf:

for i in {1..120} ; do
    printf '%03d\n' $i
done
  • % 开始格式化字符串
  • d表示整数
  • 3表示长度=3
  • 0 表示 零填充
  • \n 是一个换行符