读数字,然后在循环中添加它们。巴什/ Linux的

时间:2013-09-03 11:26:43

标签: linux bash loops

帮助!

我在找出如何添加我已经写入(读取)循环的数字时遇到了很大的问题。 我应该做的任务是添加X数量的数字(我必须使用读取)然后在按下“Ctrl + d”时添加它们。我对linux很新,所以请尽量简单:)

4 个答案:

答案 0 :(得分:6)

#!/bin/bash

sum=0
while read num;
do
    let sum=sum+num;
done

echo $sum

命令:

./script.sh

输入:

1
2
3
4
5
ctrl+D

输出:

15

答案 1 :(得分:2)

我最喜欢的技巧是bc

xargs -n1 | paste -sd+ | bc

如果您不想使用bc

,可以使用bash评估
sum=$(($(xargs -n1 | paste -sd+)))

echo $sum

答案 2 :(得分:0)

假设您的输入每行包含一个数字而不包含其他内容,则此类内容应该有效:

cat $file | tr "\n" "+" | tr -d " " | sed 's/\+$/\n/' | bc

(无用的cat:这是一个例子,因此cat $ file表示每行可能输出一个数字的任何内容)

如果你的数字不是整数,你可以将-l选项添加到bc,这将启用浮点支持等。

答案 3 :(得分:0)

#!/bin/bash

shopt -s extglob

SUM=0
while read NUM && [[ $NUM == +([[:digit:]]) ]]; do
    (( SUM += NUM ))
done

echo "$SUM"