我希望有人能帮忙......
我已经将整数解析为由回车分隔的文件,如下所示:
...
427562786个
6834257个
978539857个
9742
578375个
...
我希望将这些放入一个数组并总计。然而,经过一些热切的谷歌搜索之后,我只能找到一种合理的方法来使用for循环来实现这一点,我的权威并不是逐行读取文件的最佳方式。
我知道在这个脚本的某个地方我需要声明这样的东西:
IFS ='
“
读线时
做
数组创建魔法
完成<的/ tmp /文件
SUM = 0
读线时
做
SUM = sum数组元素魔法
完成<的/ tmp /文件
printf $ SUM
请知道比我知识渊博的人让我知道我错过了什么?谢谢。 :)
答案 0 :(得分:2)
如果阵列只是一个中间步骤,并且在此之后不需要,那么这将直接带您到最终答案:
sum=0
while read N
do
# sum=$((sum+N)) - the line below shows a more concise syntax
((sum += N))
echo "Added $N to reach $sum"
done < /tmp/list_of_numbers
echo $sum
答案 1 :(得分:1)
在bash 4中,有mapfile
命令。
mapfile -t numbers < /tmp/list_of_numbers
for n in "${numbers[@]}"; do
(( sum += n ))
done
在早期版本的bash中,你可以使用read
,但它更冗长:
IFS=$'\n' read -d '' -a numbers < /tmp/list_of_numbers