URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 5744
[ Назад ]

Исходное сообщение
"Сложение неизвестного кол-ва значений."

Отправлено invisible , 26-Сен-06 11:44 
Привет.

Есть некий скрипт, на выходе которого значения (не определенное кол-во) в столбик. Как сложить все эти числа?

Например, на выходе 3 числа:

23
45
56

Или 4 числа:

23
34
56
2

Как получить сумму?


Содержание

Сообщения в этом обсуждении
"Сложение неизвестного кол-ва значений."
Отправлено sanya , 26-Сен-06 12:21 
>Привет.
Perl рулит...

<твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'


"Сложение неизвестного кол-ва значений."
Отправлено invisible , 26-Сен-06 12:27 
>>Привет.
>Perl рулит...
>
><твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'

Мне бы на шелле, пожалуйста.



"Сложение неизвестного кол-ва значений."
Отправлено sas , 26-Сен-06 13:17 
>>>Привет.
>>Perl рулит...
>>
>><твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'
>
>Мне бы на шелле, пожалуйста.

shift


"Сложение неизвестного кол-ва значений."
Отправлено invisible , 26-Сен-06 13:26 
>>>>Привет.
>>>Perl рулит...
>>>
>>><твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'
>>
>>Мне бы на шелле, пожалуйста.
>
>shift

Поподробней можно?


"Сложение неизвестного кол-ва значений."
Отправлено sas , 29-Сен-06 06:34 
>>>>>Привет.
>>>>Perl рулит...
>>>>
>>>><твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'
>>>
>>>Мне бы на шелле, пожалуйста.
>>
>>shift
>
>Поподробней можно?


#!/bin/bash
s=0
while [ ! -z $1 ]; do
    s=$(($s+$1))
    shift
done
echo "Result: $s"

Пример применения (числа находятся в файле "nums"):

./calc.sh $(cat nums)

Удачи
--- sas


"Сложение неизвестного кол-ва значений."
Отправлено madskull , 26-Сен-06 17:39 
>>>Привет.
>>Perl рулит...
>>
>><твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'
>
>Мне бы на шелле, пожалуйста.

собсно, перл уже давно можно считать частью шелл-утилитой, как и awk:

script | awk '{s+=$0}END{print s}'

а если нужно "чиста баш", то
s=0; while read i; do ((s+=i)); done < <(script); echo $s


"Сложение неизвестного кол-ва значений."
Отправлено invisible , 28-Сен-06 11:57 
>>>>Привет.
>>>Perl рулит...
>>>
>>><твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'
>>
>>Мне бы на шелле, пожалуйста.
>
>собсно, перл уже давно можно считать частью шелл-утилитой, как и awk:
>
>script | awk '{s+=$0}END{print s}'
>
>а если нужно "чиста баш", то
>s=0; while read i; do ((s+=i)); done < <(script); echo $s
Спасибо огромное.



"Сложение неизвестного кол-ва значений."
Отправлено aljil , 28-Сен-06 14:50 
Даже не баш %-)

#!/bin/sh
s='0'
for i in `тут-твой-скрипт`
do
   s=$(( $s + $i ))
done
echo "${s}"