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 中的数字表示为字符串。
请注意,您应该验证用户输入(以便可以在那里完成符号删除)。
是否可以对输入到 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 中的数字表示为字符串。
请注意,您应该验证用户输入(以便可以在那里完成符号删除)。