Bash脚本添加由空格分隔的数字的绝对值
Posted
技术标签:
【中文标题】Bash脚本添加由空格分隔的数字的绝对值【英文标题】:Bash script to add absolute values of numbers seperated by spaces 【发布时间】:2021-12-21 17:50:43 【问题描述】:我需要一个 bash 脚本来查找由空格分隔的整数的绝对值之和。例如,如果输入是:
1 2 -3
脚本应该将 6 打印到标准输出 我有:
while read x ; do echo $(( $x// /+ )) ; done
这给了我
0
如果没有复杂的事情,我将如何在该语句中包含每个 x 的绝对值,以便输出为:
6
【问题讨论】:
您可以在将空格转换为+
之前删除所有 -
字符。
【参考方案1】:
您几乎完成了,但-
s 必须已从以下行中删除:
while read x; do x=$x//-; echo $(( $x// /+ )); done
【讨论】:
【参考方案2】:POSIX 友好的实现,无需运行循环且无需生成子 shell:
#!/usr/bin/env sh
abssum()
IFS='-'
set -- $*
IFS=' '
set -- $*
IFS=+
printf %d\\n $(($*))
abssum 1 2 -3
结果:
6
【讨论】:
【参考方案3】:巴马尔的想法:
echo "1 2 -3" | tr -d - | tr ' ' '+' | bc -l
输出:
6【讨论】:
你能用变量而不是硬编码的 1 2 -3 给我看你的例子吗? 将1 2 -3
替换为$x
。以上是关于Bash脚本添加由空格分隔的数字的绝对值的主要内容,如果未能解决你的问题,请参考以下文章