clb*_*clb 5 bash shell sum rows
我正在尝试编写一个 bash 脚本,用于按行和列计算数字的平均值。我正在阅读的文本文件的一个例子是:
1 2 3 4 5
4 6 7 8 0
Run Code Online (Sandbox Code Playgroud)
行数未知,列数未知。目前,我只是想用 while 循环对每一行求和。所需的输出是:
1 2 3 4 5 Sum = 15
4 6 7 8 0 Sum = 25
Run Code Online (Sandbox Code Playgroud)
依此类推,每一行。目前这是我的代码:
while read i
do
echo "num: $i"
(( sum=$sum+$i ))
echo "sum: $sum"
done < $2
Run Code Online (Sandbox Code Playgroud)
要调用程序,它是 stats -r test_file。“-r”表示行——我还没有开始列。我当前的代码实际上只是取每列的第一个数字并将它们加在一起,然后其余的数字作为语法错误出现。它说错误来自像 16,这是 (( sum=$sum+$i )) 行,但老实说,我无法弄清楚问题是什么。我应该告诉你,我对 bash 脚本非常陌生,我在谷歌上搜索并搜索了很多关于这个问题的答案,但找不到。任何帮助是极大的赞赏。
您正在逐行读取文件,求和行不是算术运算。尝试这个:
while read i
do
sum=0
for num in $i
do
sum=$(($sum + $num))
done
echo "$i Sum: $sum"
done < $2
Run Code Online (Sandbox Code Playgroud)
只需使用 for 循环将每一行中的每个数字分开即可。我希望这有帮助。