帮助!
我在找出如何添加我已经写入(读取)循环的数字时遇到了很大的问题。我应该做的任务是添加 X 数量的数字(我必须使用 read),然后在按下“Ctrl+d”时将它们全部添加。我对linux相当陌生,所以请尽可能简单:)
#!/bin/bash
sum=0
while read num;
do
let sum=sum+num;
done
echo $sum
命令:</p>
./script.sh
输入:
1
2
3
4
5
ctrl+D
输出:
15
我最喜欢的技巧在这里使用bc
:
xargs -n1 | paste -sd+ | bc
尽管如果您不想使用,可以使用 bash 评估bc
:
sum=$(($(xargs -n1 | paste -sd+)))
echo $sum
假设您的输入每行包含一个数字而没有其他内容,这样的事情应该可以工作:
cat $file | tr "\n" "+" | tr -d " " | sed 's/\+$/\n/' | bc
(cat 的无用用法:这是一个示例,因此 cat $file 表示任何可能每行输出一个数字的内容)
如果您的数字不是整数,您可以将 -l 选项添加到 bc ,这将启用浮点支持。
#!/bin/bash
shopt -s extglob
SUM=0
while read NUM && [[ $NUM == +([[:digit:]]) ]]; do
(( SUM += NUM ))
done
echo "$SUM"