Bash 求和绝对值的脚本?

Bash script to sum absolute values?

是否可以对输入到 stdin 的整数的绝对值求和并将结果打印到 stdout?

到目前为止我是这样的:

read X
read Y
echo "$(($X+$Y))"

可以return:

11
11
22

但希望获得绝对结果。例如:

-11
11
22

考虑修改版本,使用现代 bash。

使用临时变量-注意let上的表达式必须用引号引起来,否则特殊字符'<'会破坏表达式逻辑。

read x
read y
let s="(x<0?-x:x)+(y<0?-y:y)"
echo "SUM(abs($x)+abs($y))=$s"

或者没有中间变量,使用'$((expr))'语法。无需引用。

read x
read y
echo "SUM(abs($x)+abs($y))=" "$(((x<0?-x:x)+(y<0?-y:y)))"

只需从变量中删除前导 -

read x
read y
echo "$((${x#-} + ${y#-}))"

这是可行的,因为 Bash 中的数字表示为字符串。

请注意,您应该验证用户输入(以便可以在那里完成符号删除)。