我应该如何在bash中排版一个变量,所以如果数字较小,它总是用前导零填充。
例如如果我将变量“a”设置为5位数字并给出值78,则输出应为00078

已经有各种答案可以告诉您如何做,例如使用printf -v a "%05d" 78;等等,但是请注意,如果采用这种方式,我们只会更改一次输出。
例如。printf -v a "%05d" 78echo $aa=32echo $a;
输出:
00078
32这里没有填充

在ksh中,有一个叫做typeset的选项,它像这样使用typeset -Z5 gen=78;echo $gen;gen=32;echo $gen;
输出:
00072
00032

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

最佳答案

你可能会做

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

关于linux - 在Bash中,如何将变量(数字)排版为5位?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28691603/

10-10 17:55