在Bash中,如何将变量(数字)类型设置为5位数



如果数字较小,我应该如何在bash中键入一个变量,这样它总是用前导零填充。例如,
如果我将变量"a"键入5位并给出值78,则输出应为00078

已经有各种各样的答案,可以告诉你如何做到这一点,比如使用
printf -v a "%05d" 78;
等等,但请注意,如果我们这样做,我们只更改一次输出。
例如
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选项,typeset即使在declare中也不可用
问题
有什么可行的解决方案吗,就像我设置了一次变量的attribution一样。或者我需要每次都在推特上输出(比如使用printf)。

您可以执行

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

最新更新