Bash 用于添加由空格分隔的数字的绝对值的脚本

Bash script to add absolute values of numbers seperated by spaces

我需要一个 bash 脚本来计算以空格分隔的整数的绝对值之和。例如,如果输入是:

1 2 -3

脚本应该将 6 打印到标准输出 我有:

while read x ; do echo $(( ${x// /+} )) ; done

这给了我

0

如果没有过于复杂的事情,我将如何在该语句中包含每个 x 的绝对值,以便输出为:

6

与巴尔马尔的想法:

echo "1 2 -3" | tr -d - | tr ' ' '+' | bc -l

输出:

6

POSIX 友好的实现,没有 运行 循环,也没有产生子 shell:

#!/usr/bin/env sh

abssum() {
  IFS='-'
  set -- $*
  IFS=' '
  set -- $*
  IFS=+
  printf %d\n $(($*))
}

abssum 1 2 -3

结果:

6

您几乎完成了,但是 -s 必须从行中删除:

while read x; do x=${x//-}; echo $(( ${x// /+} )); done