Привет.Есть некий скрипт, на выходе которого значения (не определенное кол-во) в столбик. Как сложить все эти числа?
Например, на выходе 3 числа:
23
45
56Или 4 числа:
23
34
56
2Как получить сумму?
>Привет.
Perl рулит...<твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'
>>Привет.
>Perl рулит...
>
><твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'Мне бы на шелле, пожалуйста.
>>>Привет.
>>Perl рулит...
>>
>><твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'
>
>Мне бы на шелле, пожалуйста.shift
>>>>Привет.
>>>Perl рулит...
>>>
>>><твой скрипт> | perl -e 'my $sum; while (<>) { $sum += $_ } print $sum'
>>
>>Мне бы на шелле, пожалуйста.
>
>shiftПоподробней можно?
>>>>>Привет.
>>>>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
>>>Привет.
>>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
>>>>Привет.
>>>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
Спасибо огромное.
Даже не баш %-)#!/bin/sh
s='0'
for i in `тут-твой-скрипт`
do
s=$(( $s + $i ))
done
echo "${s}"