2015-03-08 2 views
0

я запускаю этот код Баш в Linux:Как подвести ряд чисел в Баш

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

, где А представляет собой процесс name.it установит быть что-то вроде этого:

38.7 69.1 81.0 83.3 86.9 87.3 88.3 89.3 90.2 

Я хочу суммировать эти цифры в bash.i:

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

, но это работает неправильно. Как я могу получить сумму этих чисел?

ответ

2
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}' 

В вашем случае, вы можете просто заменить AWK в вашем трубопровода:

awk '{s+=$9}END{print s}' 
+0

я использовать эхо $ B | awk '{s + = $ 9} END {print s}', который B является результатом верхней команды выше, но он дает мне только последний номер – EmadSmart

+0

Да, команда, которую вы даете, действительно напечатает последнее число (точнее, 9-й номер). Попробуйте использовать одну из команд, предоставленных в этом ответе. (например, 'echo $ B | tr '' \\ n | awk '{s + = $ 0} END {print s}'') –

Смежные вопросы