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

Rem*_*i.b 0 bash string-formatting

我是一个bash新手.我想数字1呼应xn数字格式.例如,让我们考虑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
Run Code Online (Sandbox Code Playgroud)

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

cho*_*oba 6

用途printf:

for i in {1..120} ; do
    printf '%03d\n' $i
done
Run Code Online (Sandbox Code Playgroud)
  • % 启动格式字符串
  • d表示整数
  • 3意味着长度= 3
  • 0意味着零填充
  • \n 是换行符

  • 这段代码可以改为`printf'%03d \n'{1..120}`(不需要循环),或者你甚至可以使用`printf'%s \n'{001..120}`. (2认同)