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