在Bash中,如何将变量(数字)排版为5位?

时间:2015-02-24 08:59:33

标签: linux bash shell

如何在bash中设置变量,因此如果数字较小,它总是用引导零填充。 对于Eg。
如果我将变量'a'排版为5位并给出值78,则输出应为00078

已经有各种各样的答案,告诉你如何去做,就像使用
一样 printf -v a "%05d" 78;
等,但请注意,如果我们这样做,我们只改变输出一次。
EG。
printf -v a "%05d" 78 echo $a a=32 echo $a;

输出:
00078
32这里没有填充

在ksh中,有一个名为typeset的选项,就像这样使用了 typeset -Z5 gen=78; echo $gen; gen=32; echo $gen;

输出:
00072
00032

但是对于bash -Z,选项不适用于排版。 在一个论坛上,一个答案声称在bash中使用“declare”而不是“typeset”,但是ksh的-Z选项,即使在声明中也没有排版。
问题
有没有可行的解决方案,就像我设置变量的atttribute一样。或者我每次都需要调整输出(比如使用printf)。

1 个答案:

答案 0 :(得分:1)

你可以做

a=78
astr=$(printf "%05d" a)
echo $astr