我想在Linux中添加两个数字,数字包含前导零,例如:
000 + 1 = 001,
111 + 4 = 115
答案1
可能有一个工具可以本机执行此操作,但我能够使用以下功能来完成它:
math_func () {
local _n1=$1
local _op=$2
local _n2=$3
local _p
local _a
if [ "${#_n1}" -gt "${#_n2}" ]; then
_p=${#_n1}
else
_p=${#_n2}
fi
_a=$(echo "scale=0; $_n1 $_op $_n2" | bc -l)
printf "%0${_p}d\n" "$_a"
}
这也可以进行减法、乘法和除法(尽管您必须转义乘法运算符,并且它不会处理浮点数)。
它将检查两个输入数字的长度,并以较大者为准来设置输出的零填充大小。
您可以像下面这样称呼它:
$ math_func 000 + 1
001
$ math_func 000000500 \* 5
000002500
$ math_func 010 / 2
005
$ math_func 2 - 1
1
答案2
好吧,我假设了一些事情,但问题也没有提到任何条件!
如果您提前知道要添加哪些数字,您可以使用这样的简单解决方案,
需要传递数字作为参数添加。
当然不是最佳的,但只是一个想法!
#!/bin/bash
num1=$1
num2=$2
temp=$(( $num1 + $num2 ))
sum=$(printf "%03d" ${temp})
echo "Sum is: $sum"
输出
Sum is: 001