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
我需要一个 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