如何编写Bash脚本实现空格分隔整数的绝对值求和?
Bash计算空格分隔整数绝对值之和的实现方案
你原有代码输出0的原因是仅将输入的空格替换为加号直接求和,负数会携带负号参与运算,比如示例输入1 2 -3会被转换为1+2+-3,运算结果自然为0。
仅需在原有逻辑基础上新增一步移除所有负号的参数替换操作即可,全程使用Bash原生语法,无额外复杂逻辑:
while read x ; do # 先移除输入中的所有负号 x=${x//-} # 再替换空格为加号求和 echo $(( ${x// /+} )) done
验证说明
输入1 2 -3时,第一步负号移除后得到1 2 3,替换空格为加号后运算1+2+3,输出结果为6,符合要求。
如果输入可能存在带正号的整数(例如+1 -2 3),可以将负号替换逻辑调整为同时移除正负号:x=${x//[+-]}即可兼容。
内容的提问来源于stack exchange,提问作者Steve Zee
相关产品推荐
相关产品推荐

