ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] О присваивании переменных в циклах на bash
@ 2005-12-27  8:07 Vitaly Lipatov
  2005-12-27  8:19 ` Sergey Pinaev
  0 siblings, 1 reply; 22+ messages in thread
From: Vitaly Lipatov @ 2005-12-27  8:07 UTC (permalink / raw)
  To: ALT Devel discussion list

Простая программа:

TEST=orig
for i in first ; do
        TEST=new
done
echo $TEST

Какое слово она выведет? Конечно же
new


А вот эта?
TEST=orig
echo first | while read i ; do
        echo "HEHE"
        TEST=new
done
echo $TEST

Вот и не угадали - выведен она 
HEHE
orig


В /usr/bin/sisyphus_relink наблюдаем такой код:
    cat "$list" |while read n; do
        f="files/$rfiles/$n"
        [ -f "$f" ] || continue
        $debug ln -s $verbose "$r/$n" "$d/" || rc=1
    done
    return $rc

получается rc тоже не присвоится и в коде ошибка?

Но как же всё таки присваивать переменные внутри таких циклов?

-- 
Lav
Виталий Липатов
Санкт-Петербург
GNU! ALT Linux Team! WINE! LaTeX! LyX! http://freesource.info


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

* Re: [devel] О присваивании переменных в циклах на bash
  2005-12-27  8:07 [devel] О присваивании переменных в циклах на bash Vitaly Lipatov
@ 2005-12-27  8:19 ` Sergey Pinaev
  2005-12-27  8:29   ` Alexey I. Froloff
  2005-12-27  8:30   ` [devel] О присваивании переменных в циклах на bash Vitaly Lipatov
  0 siblings, 2 replies; 22+ messages in thread
From: Sergey Pinaev @ 2005-12-27  8:19 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tue, 27 Dec 2005 11:07:35 +0300
Vitaly Lipatov <lav@altlinux.ru> wrote:

> Вот и не угадали - выведен она 

Зачем угадывать? С | спавнится новый шелл.

> В /usr/bin/sisyphus_relink наблюдаем такой код:
>     cat "$list" |while read n; do
>         f="files/$rfiles/$n"
>         [ -f "$f" ] || continue
>         $debug ln -s $verbose "$r/$n" "$d/" || rc=1
>     done
>     return $rc
> 
> получается rc тоже не присвоится и в коде ошибка?

Да, в родительском шелле rc будет не тот, который был
в шелле, исполняющем while.

> Но как же всё таки присваивать переменные внутри таких циклов?

Не делать таких циклов.
for n in `cat "$list"`; do ...

-- 
mail="Sergey Pinaev <dfo@antex.ru>"
url="http://`echo $mail | sed 's/.* <\(.*\)@\(.*\)>/\1.\2/'`"


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

* Re: [devel] О присваивании переменных в циклах на bash
  2005-12-27  8:19 ` Sergey Pinaev
@ 2005-12-27  8:29   ` Alexey I. Froloff
  2005-12-27  9:05     ` Vitaly Lipatov
  2005-12-27  8:30   ` [devel] О присваивании переменных в циклах на bash Vitaly Lipatov
  1 sibling, 1 reply; 22+ messages in thread
From: Alexey I. Froloff @ 2005-12-27  8:29 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 416 bytes --]

* Sergey Pinaev <dfo@> [051227 11:21]:
> > Но как же всё таки присваивать переменные внутри таких циклов?
> Не делать таких циклов.
> for n in `cat "$list"`; do ...
А .. | while read a b c ... ?

while read n < "$list"; do
...

-- 
Regards, Alexey I. Froloff
AIF5-RIPN, AIF5-RIPE
-------------------------------------------
  Inform-Mobil, Ltd. System Administrator
       http://www.inform-mobil.ru/

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] О присваивании переменных в циклах на bash
  2005-12-27  8:19 ` Sergey Pinaev
  2005-12-27  8:29   ` Alexey I. Froloff
@ 2005-12-27  8:30   ` Vitaly Lipatov
  2005-12-27  8:33     ` Sergey Pinaev
  2005-12-27 20:27     ` Denis Ovsienko
  1 sibling, 2 replies; 22+ messages in thread
From: Vitaly Lipatov @ 2005-12-27  8:30 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tuesday 27 December 2005 11:19, Sergey Pinaev wrote:
> On Tue, 27 Dec 2005 11:07:35 +0300
>
> Vitaly Lipatov <lav@altlinux.ru> wrote:
> > Вот и не угадали - выведен она
>
> Зачем угадывать? С | спавнится новый шелл.
>
> > В /usr/bin/sisyphus_relink наблюдаем такой код:
> >     cat "$list" |while read n; do
> >         f="files/$rfiles/$n"
> >         [ -f "$f" ] || continue
> >         $debug ln -s $verbose "$r/$n" "$d/" || rc=1
> >     done
> >     return $rc
> >
> > получается rc тоже не присвоится и в коде ошибка?
>
> Да, в родительском шелле rc будет не тот, который был
> в шелле, исполняющем while.
То есть вешаем баг на
/usr/bin/sisyphus_relink
>
> > Но как же всё таки присваивать переменные внутри таких
> > циклов?
>
> Не делать таких циклов.
> for n in `cat "$list"`; do ...
Дело в том что задача такова:
читать из файла, содержащего несколько значений в строке через 
пробел (а это наиболее удобно через read), а for позволит только 
одним значением оперировать (или ему можно разделитель 
поменять?)

-- 
Lav
Виталий Липатов
Санкт-Петербург
GNU! ALT Linux Team! WINE! LaTeX! LyX! http://freesource.info


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

* Re: [devel] О присваивании переменных в циклах на bash
  2005-12-27  8:30   ` [devel] О присваивании переменных в циклах на bash Vitaly Lipatov
@ 2005-12-27  8:33     ` Sergey Pinaev
  2005-12-27 20:27     ` Denis Ovsienko
  1 sibling, 0 replies; 22+ messages in thread
From: Sergey Pinaev @ 2005-12-27  8:33 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tue, 27 Dec 2005 11:30:50 +0300
Vitaly Lipatov <lav@altlinux.ru> wrote:

> > Не делать таких циклов.
> > for n in `cat "$list"`; do ...
> Дело в том что задача такова:
> читать из файла, содержащего несколько значений в строке через 
> пробел (а это наиболее удобно через read), а for позволит только 
> одним значением оперировать (или ему можно разделитель 
> поменять?)

Можно (IFS). А можно в соседнее письмо посмотреть.

-- 
mail="Sergey Pinaev <dfo@antex.ru>"
url="http://`echo $mail | sed 's/.* <\(.*\)@\(.*\)>/\1.\2/'`"


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

* Re: [devel] О присваивании переменных в циклах на bash
  2005-12-27  8:29   ` Alexey I. Froloff
@ 2005-12-27  9:05     ` Vitaly Lipatov
  2005-12-27  9:10       ` Sergey Pinaev
  0 siblings, 1 reply; 22+ messages in thread
From: Vitaly Lipatov @ 2005-12-27  9:05 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tuesday 27 December 2005 11:29, Alexey I. Froloff wrote:
> * Sergey Pinaev <dfo@> [051227 11:21]:
> > > Но как же всё таки присваивать переменные внутри таких
> > > циклов?
> >
> > Не делать таких циклов.
> > for n in `cat "$list"`; do ...
>
> А .. | while read a b c ... ?
>
> while read n < "$list"; do
> ...
У меня получается вечный цикл:
cat <<EOF >infile
first
second
EOF

TEST=orig
while read i < infile ; do
        echo "HEHE"
        TEST=new
done
echo $TEST

-- 
Lav
Виталий Липатов
Санкт-Петербург
GNU! ALT Linux Team! WINE! LaTeX! LyX! http://freesource.info


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

* Re: [devel] О присваивании переменных в циклах на bash
  2005-12-27  9:05     ` Vitaly Lipatov
@ 2005-12-27  9:10       ` Sergey Pinaev
  2005-12-27  9:37         ` [devel] " Vitaly Ostanin
  0 siblings, 1 reply; 22+ messages in thread
From: Sergey Pinaev @ 2005-12-27  9:10 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tue, 27 Dec 2005 12:05:30 +0300
Vitaly Lipatov <lav@altlinux.ru> wrote:

> > > Не делать таких циклов.
> > > for n in `cat "$list"`; do ...
> >
> > А .. | while read a b c ... ?
> >
> > while read n < "$list"; do
> > ...
> У меня получается вечный цикл:
> cat <<EOF >infile
> first
> second
> EOF
> 
> TEST=orig
> while read i < infile ; do
>         echo "HEHE"
>         TEST=new
> done
> echo $TEST

while read var; do
...
done < infile

-- 
mail="Sergey Pinaev <dfo@antex.ru>"
url="http://`echo $mail | sed 's/.* <\(.*\)@\(.*\)>/\1.\2/'`"


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

* [devel] Re: О присваивании переменных в циклах на bash
  2005-12-27  9:10       ` Sergey Pinaev
@ 2005-12-27  9:37         ` Vitaly Ostanin
  2005-12-27  9:41           ` Sergey Pinaev
  2005-12-28 12:25           ` Sergey V Turchin
  0 siblings, 2 replies; 22+ messages in thread
From: Vitaly Ostanin @ 2005-12-27  9:37 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 710 bytes --]

Sergey Pinaev пишет:
> On Tue, 27 Dec 2005 12:05:30 +0300
> Vitaly Lipatov <lav@altlinux.ru> wrote:
> 
> 
>>>>Не делать таких циклов.
>>>>for n in `cat "$list"`; do ...
>>>
>>>А .. | while read a b c ... ?
>>>
>>>while read n < "$list"; do
>>>...
>>
>>У меня получается вечный цикл:
>>cat <<EOF >infile
>>first
>>second
>>EOF
>>
>>TEST=orig
>>while read i < infile ; do
>>        echo "HEHE"
>>        TEST=new
>>done
>>echo $TEST
> 
> 
> while read var; do
> ...
> done < infile

А как то же самое сделать для переменной (содержащей список
строк) вместо infile ? У меня не заработал ни один из вариантов.

-- 
Regards, Vyt
mailto:  vyt@vzljot.ru
JID:     vyt@vzljot.ru


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]

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

* Re: [devel] Re: О присваивании переменных в циклах на bash
  2005-12-27  9:37         ` [devel] " Vitaly Ostanin
@ 2005-12-27  9:41           ` Sergey Pinaev
  2005-12-27 10:03             ` Vitaly Ostanin
  2005-12-27 10:04             ` Aleksey Avdeev
  2005-12-28 12:25           ` Sergey V Turchin
  1 sibling, 2 replies; 22+ messages in thread
From: Sergey Pinaev @ 2005-12-27  9:41 UTC (permalink / raw)
  To: ALT Devel discussion list

On Tue, 27 Dec 2005 12:37:17 +0300
Vitaly Ostanin <vyt@vzljot.ru> wrote:

> А как то же самое сделать для переменной (содержащей список
> строк) вместо infile ? У меня не заработал ни один из вариантов.

Давай я тебя сразу на http://www.tldp.org/LDP/abs/html/ пошлю? =)

-- 
mail="Sergey Pinaev <dfo@antex.ru>"
url="http://`echo $mail | sed 's/.* <\(.*\)@\(.*\)>/\1.\2/'`"


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

* [devel] Re: О присваивании переменных в циклах на bash
  2005-12-27  9:41           ` Sergey Pinaev
@ 2005-12-27 10:03             ` Vitaly Ostanin
  2005-12-27 10:04             ` Aleksey Avdeev
  1 sibling, 0 replies; 22+ messages in thread
From: Vitaly Ostanin @ 2005-12-27 10:03 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 402 bytes --]

Sergey Pinaev пишет:
> On Tue, 27 Dec 2005 12:37:17 +0300
> Vitaly Ostanin <vyt@vzljot.ru> wrote:
> 
>>А как то же самое сделать для переменной (содержащей список
>>строк) вместо infile ? У меня не заработал ни один из вариантов.
> 
> Давай я тебя сразу на http://www.tldp.org/LDP/abs/html/ пошлю? =)

Ну что ж делать :)

-- 
Regards, Vyt
mailto:  vyt@vzljot.ru
JID:     vyt@vzljot.ru


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]

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

* Re: [devel] Re: О присваивании переменных в циклах на bash
  2005-12-27  9:41           ` Sergey Pinaev
  2005-12-27 10:03             ` Vitaly Ostanin
@ 2005-12-27 10:04             ` Aleksey Avdeev
  2005-12-27 12:53               ` Ivan Fedorov
  1 sibling, 1 reply; 22+ messages in thread
From: Aleksey Avdeev @ 2005-12-27 10:04 UTC (permalink / raw)
  To: ALT Devel discussion list

Sergey Pinaev пишет:
> On Tue, 27 Dec 2005 12:37:17 +0300
> Vitaly Ostanin <vyt@vzljot.ru> wrote:
> 
> 
>>А как то же самое сделать для переменной (содержащей список
>>строк) вместо infile ? У меня не заработал ни один из вариантов.
> 
> 
> Давай я тебя сразу на http://www.tldp.org/LDP/abs/html/ пошлю? =)
> 

  До кучи:
<http://gazette.linux.ru.net/rus/articles/index-abs-guide.html> :-)

-- 

С уважением. Алексей.



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

* Re: [devel] Re: О присваивании переменных в циклах на bash
  2005-12-27 10:04             ` Aleksey Avdeev
@ 2005-12-27 12:53               ` Ivan Fedorov
  2005-12-27 13:22                 ` Aleksey Avdeev
  0 siblings, 1 reply; 22+ messages in thread
From: Ivan Fedorov @ 2005-12-27 12:53 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 571 bytes --]

Aleksey Avdeev пишет:
> Sergey Pinaev пишет:
> 
>>On Tue, 27 Dec 2005 12:37:17 +0300
>>Vitaly Ostanin <vyt@vzljot.ru> wrote:
>>
>>
>>
>>>А как то же самое сделать для переменной (содержащей список
>>>строк) вместо infile ? У меня не заработал ни один из вариантов.
>>
>>
>>Давай я тебя сразу на http://www.tldp.org/LDP/abs/html/ пошлю? =)
>>
> 
> 
>   До кучи:
> <http://gazette.linux.ru.net/rus/articles/index-abs-guide.html> :-)
> 
Оно устарело... и сильно...

Английский вариант лучше на порядок... если конечно нет проблем с
английским... ;)


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] Re: О присваивании переменных в циклах на bash
  2005-12-27 12:53               ` Ivan Fedorov
@ 2005-12-27 13:22                 ` Aleksey Avdeev
  2005-12-27 13:57                   ` Ivan Fedorov
  0 siblings, 1 reply; 22+ messages in thread
From: Aleksey Avdeev @ 2005-12-27 13:22 UTC (permalink / raw)
  To: ALT Devel discussion list

Ivan Fedorov пишет:
> Aleksey Avdeev пишет:
> 
>>Sergey Pinaev пишет:
>>
>>
>>>On Tue, 27 Dec 2005 12:37:17 +0300
>>>Vitaly Ostanin <vyt@vzljot.ru> wrote:
>>>
>>>
>>>
>>>
>>>>А как то же самое сделать для переменной (содержащей список
>>>>строк) вместо infile ? У меня не заработал ни один из вариантов.
>>>
>>>
>>>Давай я тебя сразу на http://www.tldp.org/LDP/abs/html/ пошлю? =)
>>>
>>
>>
>>  До кучи:
>><http://gazette.linux.ru.net/rus/articles/index-abs-guide.html> :-)
>>
> 
> Оно устарело... и сильно...
> 
> Английский вариант лучше на порядок... если конечно нет проблем с
> английским... ;)

   OK, Буду знать. :-)

-- 

С уважением. Алексей.


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

* Re: [devel] Re: О присваивании переменных в циклах на bash
  2005-12-27 13:22                 ` Aleksey Avdeev
@ 2005-12-27 13:57                   ` Ivan Fedorov
  0 siblings, 0 replies; 22+ messages in thread
From: Ivan Fedorov @ 2005-12-27 13:57 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 400 bytes --]

Aleksey Avdeev пишет:
>>>> Давай я тебя сразу на http://www.tldp.org/LDP/abs/html/ пошлю? =)
>>>>
>>>  До кучи:
>>> <http://gazette.linux.ru.net/rus/articles/index-abs-guide.html> :-)
>>>
>>
>> Оно устарело... и сильно...
>>
>> Английский вариант лучше на порядок... если конечно нет проблем с
>> английским... ;)
> 
>   OK, Буду знать. :-)
> 
Я это на собственном опыте узнавал! ;)


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] О присваивании переменных в циклах на bash
  2005-12-27  8:30   ` [devel] О присваивании переменных в циклах на bash Vitaly Lipatov
  2005-12-27  8:33     ` Sergey Pinaev
@ 2005-12-27 20:27     ` Denis Ovsienko
  1 sibling, 0 replies; 22+ messages in thread
From: Denis Ovsienko @ 2005-12-27 20:27 UTC (permalink / raw)
  To: ALT Devel discussion list

> Дело в том что задача такова:
> читать из файла, содержащего несколько значений в строке через 
> пробел (а это наиболее удобно через read), а for позволит только 
> одним значением оперировать (или ему можно разделитель 
> поменять?)
Зависит от формата, но может подойти tr '\n' ' '

-- 
    DO4-UANIC


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

* Re: [devel] Re: О присваивании переменных в циклах на bash
  2005-12-27  9:37         ` [devel] " Vitaly Ostanin
  2005-12-27  9:41           ` Sergey Pinaev
@ 2005-12-28 12:25           ` Sergey V Turchin
  2006-01-12 15:10             ` [devel] Re: н ОПХЯБЮХБЮМХХ ОЕПЕЛЕММШУ Б ЖХЙКЮУ МЮ bash Vitaly Ostanin
  1 sibling, 1 reply; 22+ messages in thread
From: Sergey V Turchin @ 2005-12-28 12:25 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 412 bytes --]

On Tuesday 27 December 2005 12:37, Vitaly Ostanin wrote:

[...]

> > while read var; do
> > ...
> > done < infile
>
> А как то же самое сделать для переменной (содержащей список
> строк) вместо infile ? У меня не заработал ни один из вариантов.
ls -d1| \
while read l
do
	ls -l "$l"
done

-- 
Regards, Sergey, ALT Linux Team, http://www.altlinux.ru
http://stinkfoot.org:11371/pks/lookup?op=get&search=0x1C2A3F08

[-- Attachment #2: Type: application/pgp-signature, Size: 190 bytes --]

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

* [devel] Re: н ОПХЯБЮХБЮМХХ ОЕПЕЛЕММШУ Б ЖХЙКЮУ МЮ bash
  2005-12-28 12:25           ` Sergey V Turchin
@ 2006-01-12 15:10             ` Vitaly Ostanin
  2006-01-12 17:05               ` [devel] Re: ... bash Sviatoslav Sviridov
  0 siblings, 1 reply; 22+ messages in thread
From: Vitaly Ostanin @ 2006-01-12 15:10 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 839 bytes --]

Sergey V Turchin пишет:
> On Tuesday 27 December 2005 12:37, Vitaly Ostanin wrote:
> 
> [...]
> 
> 
>>>while read var; do
>>>...
>>>done < infile
>>
>>А как то же самое сделать для переменной (содержащей список
>>строк) вместо infile ? У меня не заработал ни один из вариантов.
> 
> ls -d1| \
> while read l
> do
> 	ls -l "$l"
> done

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

Из
http://www.tldp.org/LDP/abs/html/
я так понял, что единственный вариант - дописывание значений
внутри while в файл, и потом чтение этого файла родительским
процессом.

PS Опять thunderbird портит subject при ответах на письма из kmail :(

<skipped/>

-- 
Regards, Vyt
mailto:  vyt@vzljot.ru
JID:     vyt@vzljot.ru


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]

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

* Re: [devel] Re: ... bash
  2006-01-12 15:10             ` [devel] Re: н ОПХЯБЮХБЮМХХ ОЕПЕЛЕММШУ Б ЖХЙКЮУ МЮ bash Vitaly Ostanin
@ 2006-01-12 17:05               ` Sviatoslav Sviridov
  2006-01-13 10:29                 ` [devel] bash Vitaly Ostanin
  0 siblings, 1 reply; 22+ messages in thread
From: Sviatoslav Sviridov @ 2006-01-12 17:05 UTC (permalink / raw)
  To: ALT Devel discussion list

Vitaly Ostanin wrote on 1/12/2006 5:10 PM:
>>>> while read var; do
>>>> ...
>>>> done < infile
>>> А как то же самое сделать для переменной (содержащей список
>>> строк) вместо infile ? У меня не заработал ни один из вариантов.
>> ls -d1| \
>> while read l
>> do
>> 	ls -l "$l"
>> done
>
> Исходная задача в изменении глобальной переменной внутри while. В
> этом примере while после |, и переменные родительскому процессу
> не возвращаются.
>
> Из
> http://www.tldp.org/LDP/abs/html/
> я так понял, что единственный вариант - дописывание значений
> внутри while в файл, и потом чтение этого файла родительским
> процессом.
Ну почему же...
Извините, пропустил начало дискуссии... но может угадаю чего надо? ;)

Из процитированного понял, что надо чтобы while выполнялся в
родительском процессе и при этом читал вывод другого процесса? что-то
типа вот этого:

$ list="line1
> line2
> line3"
$ a=qqq
$ while read l; do a="$l"; done < <(echo "$list")
$ echo $a
line3

Так пойдет?

-- 
Best Regards,
Sviatoslav Sviridov



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

* [devel] Re: bash
  2006-01-12 17:05               ` [devel] Re: ... bash Sviatoslav Sviridov
@ 2006-01-13 10:29                 ` Vitaly Ostanin
  2006-01-13 10:43                   ` Sviataslau Svirydau
  0 siblings, 1 reply; 22+ messages in thread
From: Vitaly Ostanin @ 2006-01-13 10:29 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 978 bytes --]

Sviatoslav Sviridov пишет:

<skipped/>

>>Исходная задача в изменении глобальной переменной внутри while. В
>>этом примере while после |, и переменные родительскому процессу
>>не возвращаются.
>>
>>Из
>>http://www.tldp.org/LDP/abs/html/
>>я так понял, что единственный вариант - дописывание значений
>>внутри while в файл, и потом чтение этого файла родительским
>>процессом.
> 
> Ну почему же...
> Извините, пропустил начало дискуссии... но может угадаю чего надо? ;)
> 
> Из процитированного понял, что надо чтобы while выполнялся в
> родительском процессе и при этом читал вывод другого процесса? что-то
> типа вот этого:
> 
> $ list="line1
> 
>>line2
>>line3"
> 
> $ a=qqq
> $ while read l; do a="$l"; done < <(echo "$list")
> $ echo $a
> line3
> 
> Так пойдет?

Шаман! Пошло. А что это за конструкция после done ? Впервые вижу
такое перенаправление (?) через пробел.

-- 
Regards, Vyt
mailto:  vyt@vzljot.ru
JID:     vyt@vzljot.ru


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]

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

* Re: [devel] Re: bash
  2006-01-13 10:29                 ` [devel] bash Vitaly Ostanin
@ 2006-01-13 10:43                   ` Sviataslau Svirydau
  2006-01-13 11:50                     ` Vitaly Ostanin
  0 siblings, 1 reply; 22+ messages in thread
From: Sviataslau Svirydau @ 2006-01-13 10:43 UTC (permalink / raw)
  To: ALT Devel discussion list

Vitaly Ostanin wrote on 1/13/2006 12:29 PM:
> Шаман! Пошло. А что это за конструкция после done ? Впервые вижу
> такое перенаправление (?) через пробел.
>   
Это process substitution.
Первый  "<" - это стандартное перенаправление.
А остаток <(...) фактически заменяется на /dev/fdX, где /dev/fdX - новый
файловый дескриптор,  открываемый шеллом.
А то, что внутри скобок запускается с перенаправлением вывода в /dev/fdX.
Работает также и в другую сторону :)

-- 
Best Regards,
Sviatoslav Sviridov



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

* [devel] Re: bash
  2006-01-13 10:43                   ` Sviataslau Svirydau
@ 2006-01-13 11:50                     ` Vitaly Ostanin
  2006-01-13 13:19                       ` Dmitry V. Levin
  0 siblings, 1 reply; 22+ messages in thread
From: Vitaly Ostanin @ 2006-01-13 11:50 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 636 bytes --]

Sviataslau Svirydau пишет:
> Vitaly Ostanin wrote on 1/13/2006 12:29 PM:
> 
>>Шаман! Пошло. А что это за конструкция после done ? Впервые вижу
>>такое перенаправление (?) через пробел.
> 
> Это process substitution.
> Первый  "<" - это стандартное перенаправление.
> А остаток <(...) фактически заменяется на /dev/fdX, где /dev/fdX - новый
> файловый дескриптор,  открываемый шеллом.
> А то, что внутри скобок запускается с перенаправлением вывода в /dev/fdX.
> Работает также и в другую сторону :)

Обалдеть... Спасибо! А где про это почитать можно?

-- 
Regards, Vyt
mailto:  vyt@vzljot.ru
JID:     vyt@vzljot.ru


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]

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

* Re: [devel] Re: bash
  2006-01-13 11:50                     ` Vitaly Ostanin
@ 2006-01-13 13:19                       ` Dmitry V. Levin
  0 siblings, 0 replies; 22+ messages in thread
From: Dmitry V. Levin @ 2006-01-13 13:19 UTC (permalink / raw)
  To: ALT Devel discussion list

[-- Attachment #1: Type: text/plain, Size: 790 bytes --]

On Fri, Jan 13, 2006 at 02:50:41PM +0300, Vitaly Ostanin wrote:
> Sviataslau Svirydau пишет:
> > Vitaly Ostanin wrote on 1/13/2006 12:29 PM:
> > 
> >>Шаман! Пошло. А что это за конструкция после done ? Впервые вижу
> >>такое перенаправление (?) через пробел.
> > 
> > Это process substitution.
> > Первый  "<" - это стандартное перенаправление.
> > А остаток <(...) фактически заменяется на /dev/fdX, где /dev/fdX - новый
> > файловый дескриптор,  открываемый шеллом.
> > А то, что внутри скобок запускается с перенаправлением вывода в /dev/fdX.
> > Работает также и в другую сторону :)
> 
> Обалдеть... Спасибо! А где про это почитать можно?

bash(1), "Process Substitution".  На GNU/Linux для работы через /dev/fdX
необходимо, чтобы был смонтирован /proc.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

end of thread, other threads:[~2006-01-13 13:19 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-12-27  8:07 [devel] О присваивании переменных в циклах на bash Vitaly Lipatov
2005-12-27  8:19 ` Sergey Pinaev
2005-12-27  8:29   ` Alexey I. Froloff
2005-12-27  9:05     ` Vitaly Lipatov
2005-12-27  9:10       ` Sergey Pinaev
2005-12-27  9:37         ` [devel] " Vitaly Ostanin
2005-12-27  9:41           ` Sergey Pinaev
2005-12-27 10:03             ` Vitaly Ostanin
2005-12-27 10:04             ` Aleksey Avdeev
2005-12-27 12:53               ` Ivan Fedorov
2005-12-27 13:22                 ` Aleksey Avdeev
2005-12-27 13:57                   ` Ivan Fedorov
2005-12-28 12:25           ` Sergey V Turchin
2006-01-12 15:10             ` [devel] Re: н ОПХЯБЮХБЮМХХ ОЕПЕЛЕММШУ Б ЖХЙКЮУ МЮ bash Vitaly Ostanin
2006-01-12 17:05               ` [devel] Re: ... bash Sviatoslav Sviridov
2006-01-13 10:29                 ` [devel] bash Vitaly Ostanin
2006-01-13 10:43                   ` Sviataslau Svirydau
2006-01-13 11:50                     ` Vitaly Ostanin
2006-01-13 13:19                       ` Dmitry V. Levin
2005-12-27  8:30   ` [devel] О присваивании переменных в циклах на bash Vitaly Lipatov
2005-12-27  8:33     ` Sergey Pinaev
2005-12-27 20:27     ` Denis Ovsienko

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/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 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

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


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