如何在bash中对一系列数字求和

Ema*_*art 2 linux bash terminal linux-mint

我在 Linux 中运行这个 bash 代码:

B=$(top -d 1 -b -n 9| grep $A | awk '{print $9}' | bc)
Run Code Online (Sandbox Code Playgroud)

其中 A 是进程名称。它将设置为如下所示:

38.7 69.1 81.0 83.3 86.9 87.3 88.3 89.3 90.2
Run Code Online (Sandbox Code Playgroud)

我想在 bash.i 中对这些数字求和:

B=$B+$(top -d 1 -b -n 9| grep $A | awk '{print $9}' | bc)
Run Code Online (Sandbox Code Playgroud)

但它不能正常工作。我怎样才能得到这些数字的总和?

Wil*_*ell 5

echo 38.7 69.1 81.0 83.3 86.9 87.3 88.3 89.3 90.2 |
    tr ' ' \\n | awk '{s+=$0}END{print s}'
Run Code Online (Sandbox Code Playgroud)

在您的情况下,您可以简单地将管道中的 awk 替换为:

awk '{s+=$9}END{print s}'
Run Code Online (Sandbox Code Playgroud)