трабл с переменными в bash скрипте

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

трабл с переменными в bash скрипте

Сообщение elide »

есть, к примеру, вот такой скриптик

Код: Выделить всё

#!/bin/bash
flag=0
/bin/ps -A | while read i
do
        flag=$((flag+1))
        echo $flag
done
echo "and finally: $flag"

очень хочется, тобы в строчке после done $flag был равен тому, до чего он дошел внутри while. очевидно, что вся конструкция while запускается в отдельном процессе bash, поэтому все работает совсем не так, как мне хочется. собственно вопро: как фиксить?

elide добавил в 11.05.2005 17:14

пройдясь по залежам инфы в собственной памяти, переписал код в виде

Код: Выделить всё

#!/bin/bash
flag=0
while read i
do
        flag=$((flag+1))
        echo $flag
done <<EOT
`/bin/ps -A`
EOT
echo "and finally: $flag"
теперь все заработало.
но кто-нибудь, обясните мне, почему эта конструкция выполняется в одном процессе?
слава роботам!
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга
Контактная информация:

Re: трабл с переменными в bash скрипте

Сообщение madskull »

Виноват пайп "bla-bla-bla | while ...."

Не помню, где видел научное обоснование... если найду, сообщу.
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: трабл с переменными в bash скрипте

Сообщение t.t »

(elide @ Среда, 11 Мая 2005, 16:14) писал(а):но кто-нибудь, обясните мне, почему эта конструкция выполняется в одном процессе?
Потому что тут нет конвейеризации.
(madskull @ Среда, 11 Мая 2005, 22:33) писал(а):Виноват пайп "bla-bla-bla | while ...."

Не помню, где видел научное обоснование... если найду, сообщу.
Обоснование чего? Что использование пайпа создаёт дополнительный процесс? А разве пайпом можно соединить один процесс сам с собой?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга
Контактная информация:

Re: трабл с переменными в bash скрипте

Сообщение madskull »

(t.t @ Пятница, 13 Мая 2005, 12:08) писал(а):
(elide @ Среда, 11 Мая 2005, 16:14) писал(а):но кто-нибудь, обясните мне, почему эта конструкция выполняется в одном процессе?
Потому что тут нет конвейеризации.
(madskull @ Среда, 11 Мая 2005, 22:33) писал(а):Виноват пайп "bla-bla-bla | while ...."

Не помню, где видел научное обоснование... если найду, сообщу.
Обоснование чего? Что использование пайпа создаёт дополнительный процесс? А разве пайпом можно соединить один процесс сам с собой?


Все правильно. Просто я тогда не умел правильно высказаться.
Устал очень (а вы что подумали? :rolleyes: )
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: трабл с переменными в bash скрипте

Сообщение t.t »

(madskull @ Пятница, 13 Мая 2005, 14:53) писал(а):Устал очень (а вы что подумали?  )
:rolleyes: Ничего... :)
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Ответить