在unix中添加两个数字

时间:2014-01-03 09:29:10

标签: sh

我尝试通过以下逻辑添加两个数字:

num=0001
newnum=`expr $num + 1`
echo $newnum

但它返回' 2',我想要的输出是' 0002'

num=0001
newnum=`expr $num + 0001`
echo $newnum

我也使用了上述逻辑,但没有用。这里需要什么来获得我想要的输出 提前谢谢。

3 个答案:

答案 0 :(得分:2)

使用printf打印带前导零的数字:

printf "%04d\n" $num

你不应该对带有前导零的数字进行算术运算,因为许多应用程序将初始零视为数字是八进制而不是十进制。

答案 1 :(得分:1)

使用printf

$ num=0001
$ printf "%04d" $(expr $num + 1)
0002

为了将结果分配给变量,请说:

$ newnum=$(printf "%04d" $(expr $num + 1))
$ echo $newnum
0002

答案 2 :(得分:0)

带前导零的数字被解释为八进制数。为了将它们视为小数,您需要在数字前加10#。最后,使用printf用零填充数字。

num=0001
newNum=$((10#$num + 1))
paddedNum=$(printf %04d $newNum)