If you have your "09"
in a variable, you can do
a="09"
echo "$a"
echo "${a#0}"
printf "%04d" "${a#0}"
Why does this help? Well, a number literal starting with 0
but having no x
at the 2nd place is interpreted as octal value.
Octal value only have the digits 0
..7
, 8
and 9
are unknown.
"${a#0}"
strips one leading 0
. The resulting value can be fed to printf
then, which prints it appropriately, with 0
prefixed, in 4 digits.
If you have to expect that you get values such as "009"
, things get more complicated as you'll have to use a loop which eliminates all excess 0
s at the start, or an extglob
expression as mentioned in the comments.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…