ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] еще один вопрос по bash
@ 2004-09-30 10:02 Jury Levykin
  2004-09-30 10:10 ` Artem K. Jouravsky
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Jury Levykin @ 2004-09-30 10:02 UTC (permalink / raw)
  To: community

Следующий код увеличивает значение summ,
но после выхода из цикла там опять ноль ??

Как с этим бороться?
export summ -- не помогает.

==================================
summ=0
cut $LOG_PATH/jur-traffic.log -d" " -f5 | (
  while read var;
  do
     summ=`expr $summ + $var`;
     echo "---------------------- $summ";
  done
)
echo "---------------------- $summ";
==================================



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] еще один вопрос по bash
  2004-09-30 10:02 [Comm] еще один вопрос по bash Jury Levykin
@ 2004-09-30 10:10 ` Artem K. Jouravsky
  2004-09-30 10:26 ` bukharov on cra
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 10+ messages in thread
From: Artem K. Jouravsky @ 2004-09-30 10:10 UTC (permalink / raw)
  To: community

On Thu, Sep 30, 2004 at 02:02:02PM +0400, Jury Levykin wrote:
> Следующий код увеличивает значение summ,
> но после выхода из цикла там опять ноль ??
> 
> Как с этим бороться?
> export summ -- не помогает.
> 
> ==================================
> summ=0
> cut $LOG_PATH/jur-traffic.log -d" " -f5 | (
>  while read var;
>  do
>     summ=`expr $summ + $var`;
>     echo "---------------------- $summ";
>  done
> )
> echo "---------------------- $summ";
> ==================================
Может быть, лучше посмотреть в сторону awk?

--
С уважением,
   Артём.
ЗАО "СЕМА.РУ"
************
Ну если хочется - кто же запретит? ;-)
		-- rider in devel@


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] еще один вопрос по bash
  2004-09-30 10:02 [Comm] еще один вопрос по bash Jury Levykin
  2004-09-30 10:10 ` Artem K. Jouravsky
@ 2004-09-30 10:26 ` bukharov on cra
  2004-09-30 10:27 ` php-coder
  2004-09-30 11:43 ` Vladimir Lettiev
  3 siblings, 0 replies; 10+ messages in thread
From: bukharov on cra @ 2004-09-30 10:26 UTC (permalink / raw)
  To: community

Hello Jury,

Thursday, September 30, 2004, 2:02:02 PM, you wrote:

> Следующий код увеличивает значение summ,
> но после выхода из цикла там опять ноль ??

> Как с этим бороться?
> export summ -- не помогает.

> ==================================
> summ=0
> cut $LOG_PATH/jur-traffic.log -d" " -f5 | (
>   while read var;
>   do
>      summ=`expr $summ + $var`;
>      echo "---------------------- $summ";
>   done
> )
> echo "---------------------- $summ";
> ==================================

  Попробуй проверить значение переменной $var, может туда не цифра
  попадает ?



-- 
Best regards,
 bukharov                            mailto:bukharov@cra.vodokanal.spb.ru



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] еще один вопрос по bash
  2004-09-30 10:02 [Comm] еще один вопрос по bash Jury Levykin
  2004-09-30 10:10 ` Artem K. Jouravsky
  2004-09-30 10:26 ` bukharov on cra
@ 2004-09-30 10:27 ` php-coder
  2004-09-30 10:38   ` Jury Levykin
  2004-09-30 11:43 ` Vladimir Lettiev
  3 siblings, 1 reply; 10+ messages in thread
From: php-coder @ 2004-09-30 10:27 UTC (permalink / raw)
  To: Jury Levykin

0000100101011110100100101::30.09.2004::0110001001001000100111100100010

    Здравствуйте, Jury!
    Отвечаю на Ваше письмо:

JL> но после выхода из цикла там опять ноль ??

    Я так понимаю, это из-за того что в цикле она локальная...
    Попробуйте вообще убрать скобки или перестроить всю конструкцию
    :-)
  
-- 
  С уважением, php-coder (mailto:php-coder[at]ngs[dot]ru)
  Registered Linux User #327594
  ALT Linux Master 2.2 (kernel 2.4.27)

010010010010010001010101100::Linux RuleZz!::100010010001000100010001110



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] еще один вопрос по bash
  2004-09-30 10:27 ` php-coder
@ 2004-09-30 10:38   ` Jury Levykin
  2004-09-30 13:27     ` Re[2]: " Maksim Otstavnov
  0 siblings, 1 reply; 10+ messages in thread
From: Jury Levykin @ 2004-09-30 10:38 UTC (permalink / raw)
  To: community

php-coder пишет:

>JL> но после выхода из цикла там опять ноль ??
>
>    Я так понимаю, это из-за того что в цикле она локальная...
>    Попробуйте вообще убрать скобки или перестроить всю конструкцию
>    :-)
>  
>
Да получается, что внутри цикла переменная локальная,
хотя и объявлена до цикла.

Скобки я уберал - тоже эффект.

Как написать то-же без цикла - не заю.

Сейчас записываю summ в tmp файл а после цикла беру обратно.
-- это конечно криво :(




^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] еще один вопрос по bash
  2004-09-30 10:02 [Comm] еще один вопрос по bash Jury Levykin
                   ` (2 preceding siblings ...)
  2004-09-30 10:27 ` php-coder
@ 2004-09-30 11:43 ` Vladimir Lettiev
  2004-10-01  6:30   ` Jury Levykin
  3 siblings, 1 reply; 10+ messages in thread
From: Vladimir Lettiev @ 2004-09-30 11:43 UTC (permalink / raw)
  To: community

Jury Levykin wrote:
> Следующий код увеличивает значение summ,
> но после выхода из цикла там опять ноль ??
> 
> Как с этим бороться?
> export summ -- не помогает.
> 
> ==================================
> summ=0
> cut $LOG_PATH/jur-traffic.log -d" " -f5 | (
>  while read var;
>  do
>     summ=`expr $summ + $var`;
>     echo "---------------------- $summ";
>  done
> )
> echo "---------------------- $summ";
> ==================================
> 

Если выбор языка shell для данной задачи обоснован исключительно для 
цели обучения языку shell, то вы выбрали плохую задачу. Если целью не 
являеся обучение, то лучше использовать, например, perl - задача будет 
решена быстро, красиво и качественно.

Например так,

#!/usr/bin/perl
#
# myscript.pl - /bin/sh suxx ;)
#

while(<>) { $sum += (split(/\s+/))[4]; }
print $sum."\n";


Вызов программы такой:
$ cat jur-traffic.log | myscript.pl

(каталог, где лежит myscript.pl должен быть в PATH)

-- 
С уважением, Владимир Леттиев aka crux <crux@syktsu.ru>


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re[2]: [Comm] еще один вопрос по bash
  2004-09-30 10:38   ` Jury Levykin
@ 2004-09-30 13:27     ` Maksim Otstavnov
  2004-10-01  6:26       ` Jury Levykin
  0 siblings, 1 reply; 10+ messages in thread
From: Maksim Otstavnov @ 2004-09-30 13:27 UTC (permalink / raw)
  To: Jury Levykin

Hello Jury,

Thursday, September 30, 2004, 2:38:06 PM, you wrote:

JL> Да получается, что внутри цикла переменная локальная,

Во-первых, она не внутри цикла локальная, она локальная внутри
экземпляра оболочки, запускаемой круглыми скобками.

Во-вторых, Вам здесь скобки вообще не нужны, т.к. нечего группировать.

В-третьих, именно этого именно от bash Вы вряд ли добьетесь, т.к. он
скорее всего даже без круглых скобок породит еще одну оболочку.

В четвертых, почему бы Вам в данном конкретном случае не написать
просто что-то вроде:

summ=0
cut $LOG_PATH/jur-traffic.log -d" " -f5 | (
  while read var;
  do
     summ=`expr $summ + $var`;
     echo "---------------------- $summ";
  done
  echo "---------------------- $summ"
)

ИЛИ

summ=0
cut $LOG_PATH/jur-traffic.log -d" " -f5 | {
  while read var;
  do
     summ=`expr $summ + $var`;
     echo "---------------------- $summ";
  done
  echo "---------------------- $summ";
}


-- 
-- Maksim Otstavnov <maksim@otstavnov.com> http://www.otstavnov.com




^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] еще один вопрос по bash
  2004-09-30 13:27     ` Re[2]: " Maksim Otstavnov
@ 2004-10-01  6:26       ` Jury Levykin
  0 siblings, 0 replies; 10+ messages in thread
From: Jury Levykin @ 2004-10-01  6:26 UTC (permalink / raw)
  To: community

Maksim Otstavnov пишет:

>В четвертых, почему бы Вам в данном конкретном случае не написать
>просто что-то вроде:
>
>summ=0
>cut $LOG_PATH/jur-traffic.log -d" " -f5 | (
>  while read var;
>  do
>     summ=`expr $summ + $var`;
>     echo "---------------------- $summ";
>  done
>  echo "---------------------- $summ"
>)
>
>ИЛИ
>
>summ=0
>cut $LOG_PATH/jur-traffic.log -d" " -f5 | {
>  while read var;
>  do
>     summ=`expr $summ + $var`;
>     echo "---------------------- $summ";
>  done
>  echo "---------------------- $summ";
>}
>  
>
Спасибо, помогло.
  :)



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] еще один вопрос по bash
  2004-09-30 11:43 ` Vladimir Lettiev
@ 2004-10-01  6:30   ` Jury Levykin
  2004-10-01  6:43     ` Mike Lykov
  0 siblings, 1 reply; 10+ messages in thread
From: Jury Levykin @ 2004-10-01  6:30 UTC (permalink / raw)
  To: community

Vladimir Lettiev пишет:

> Если выбор языка shell для данной задачи обоснован исключительно для 
> цели обучения языку shell, то вы выбрали плохую задачу. Если целью не 
> являеся обучение, то лучше использовать, например, perl - задача будет 
> решена быстро, красиво и качественно.
>
> Например так,
>
> #!/usr/bin/perl
> #
> # myscript.pl - /bin/sh suxx ;)
> #
>
> while(<>) { $sum += (split(/\s+/))[4]; }
> print $sum."\n";

Спасибо, на перл конечно удобнее,
но я года четыре не писал на Perl.

Посоветуйте хороший online справочник / учебник по Perl.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [Comm] еще один вопрос по bash
  2004-10-01  6:30   ` Jury Levykin
@ 2004-10-01  6:43     ` Mike Lykov
  0 siblings, 0 replies; 10+ messages in thread
From: Mike Lykov @ 2004-10-01  6:43 UTC (permalink / raw)
  To: community

В сообщении от Пятница 01 Октябрь 2004 11:30 Jury Levykin написал:

> Посоветуйте хороший online справочник / учебник по Perl.

http://www.balakovo.san.ru/%7Emishin/oreilly/

O'Reilly  - рулит

-- 
Mike Lykov
Samara, "Vesna" parfum company, System administrator 


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2004-10-01  6:43 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-09-30 10:02 [Comm] еще один вопрос по bash Jury Levykin
2004-09-30 10:10 ` Artem K. Jouravsky
2004-09-30 10:26 ` bukharov on cra
2004-09-30 10:27 ` php-coder
2004-09-30 10:38   ` Jury Levykin
2004-09-30 13:27     ` Re[2]: " Maksim Otstavnov
2004-10-01  6:26       ` Jury Levykin
2004-09-30 11:43 ` Vladimir Lettiev
2004-10-01  6:30   ` Jury Levykin
2004-10-01  6:43     ` Mike Lykov

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git