* [sisyphus] bash 2
@ 2002-10-15 19:04 at
2002-10-17 1:03 ` [sisyphus] " at
0 siblings, 1 reply; 7+ messages in thread
From: at @ 2002-10-15 19:04 UTC (permalink / raw)
To: sisyphus
$ echo 'echo 1 2 3 | P=$(cat); echo $P' | /bin/sh -xs
+ echo 1 2 3
++ cat
+ P=1 2 3
+ echo
$
?
^ permalink raw reply [flat|nested] 7+ messages in thread
* [sisyphus] Re: bash 2
2002-10-15 19:04 [sisyphus] bash 2 at
@ 2002-10-17 1:03 ` at
2002-10-17 1:16 ` Serge Pavlovsky
0 siblings, 1 reply; 7+ messages in thread
From: at @ 2002-10-17 1:03 UTC (permalink / raw)
To: sisyphus
On Tue, Oct 15, 2002 at 11:04:09PM +0400, at@homestead.turbinal.org wrote:
>
> $ echo 'echo 1 2 3 | P=$(cat); echo $P' | /bin/sh -xs
> + echo 1 2 3
> ++ cat
> + P=1 2 3
> + echo
Не работает и так:
$ echo 'echo 1 2 3 | export P=$(cat); echo $P' | /bin/sh -xs
Вообще никак не работает.
Это тоже баг или я "не в курсе"?
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [sisyphus] Re: bash 2
2002-10-17 1:03 ` [sisyphus] " at
@ 2002-10-17 1:16 ` Serge Pavlovsky
2002-10-17 2:10 ` at
0 siblings, 1 reply; 7+ messages in thread
From: Serge Pavlovsky @ 2002-10-17 1:16 UTC (permalink / raw)
To: Sisyphus
В Чтв, 17.10.2002, в 04:03, at@turbinal.org написал:
> On Tue, Oct 15, 2002 at 11:04:09PM +0400, at@homestead.turbinal.org wrote:
> >
> > $ echo 'echo 1 2 3 | P=$(cat); echo $P' | /bin/sh -xs
> > + echo 1 2 3
> > ++ cat
> > + P=1 2 3
> > + echo
>
> Не работает и так:
>
> $ echo 'echo 1 2 3 | export P=$(cat); echo $P' | /bin/sh -xs
echo 'P=$(echo 1 2 3|cat); echo $P' | /bin/sh -xs
но зачем ? :)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [sisyphus] Re: bash 2
2002-10-17 1:16 ` Serge Pavlovsky
@ 2002-10-17 2:10 ` at
2002-10-17 2:44 ` Serge Pavlovsky
2002-10-17 3:21 ` Peter V. Saveliev
0 siblings, 2 replies; 7+ messages in thread
From: at @ 2002-10-17 2:10 UTC (permalink / raw)
To: sisyphus
On Thu, Oct 17, 2002 at 04:16:38AM +0300, Serge Pavlovsky wrote:
> > Не работает и так:
> >
> > $ echo 'echo 1 2 3 | export P=$(cat); echo $P' | /bin/sh -xs
>
> echo 'P=$(echo 1 2 3|cat); echo $P' | /bin/sh -xs
>
> но зачем ? :)
Зачем -- это плохой вопрос. Сложные ошибки нужно сводить к простым,
чтобы глюк проявлялся максимально эффективно. Хороший вопрос -- должно
ли это в принципе работать или нет. Ибо существуют такие вещи, как LALR
context-free grammar. Похоже, что в данном случае они отсутствуют. Либо
я не в курсе. Но хочется, чтобы работало.
Увы, мы имеем дело с глюкавым софтом. Интереснее всего это проявляется в
zsh:
$ echo 123 | P=$(cat)
cat: -: Input/output error
$
Зачем зишелл отыскал дэш там, где его нет, и почему, к тому же, не смог
правильно открыть пайп, я не понимаю.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [sisyphus] Re: bash 2
2002-10-17 2:10 ` at
@ 2002-10-17 2:44 ` Serge Pavlovsky
2002-10-17 5:01 ` at
2002-10-17 3:21 ` Peter V. Saveliev
1 sibling, 1 reply; 7+ messages in thread
From: Serge Pavlovsky @ 2002-10-17 2:44 UTC (permalink / raw)
To: Sisyphus
В Чтв, 17.10.2002, в 05:10, at@turbinal.org написал:
> On Thu, Oct 17, 2002 at 04:16:38AM +0300, Serge Pavlovsky wrote:
> > > Не работает и так:
> > >
> > > $ echo 'echo 1 2 3 | export P=$(cat); echo $P' | /bin/sh -xs
> >
> > echo 'P=$(echo 1 2 3|cat); echo $P' | /bin/sh -xs
> >
> > но зачем ? :)
>
> Зачем -- это плохой вопрос. Сложные ошибки нужно сводить к простым,
> чтобы глюк проявлялся максимально эффективно. Хороший вопрос -- должно
> ли это в принципе работать или нет. Ибо существуют такие вещи, как LALR
> context-free grammar. Похоже, что в данном случае они отсутствуют. Либо
> я не в курсе. Но хочется, чтобы работало.
очевидно, что перенаправление влияет только на команду, а не на
подстановку переменных.
>
> Увы, мы имеем дело с глюкавым софтом. Интереснее всего это проявляется в
> zsh:
>
> $ echo 123 | P=$(cat)
> cat: -: Input/output error
> $
>
> Зачем зишелл отыскал дэш там, где его нет, и почему, к тому же, не смог
> правильно открыть пайп, я не понимаю.
насчет zsh ничего не скажу. в нем черт ногу сломит :)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [sisyphus] Re: bash 2
2002-10-17 2:10 ` at
2002-10-17 2:44 ` Serge Pavlovsky
@ 2002-10-17 3:21 ` Peter V. Saveliev
1 sibling, 0 replies; 7+ messages in thread
From: Peter V. Saveliev @ 2002-10-17 3:21 UTC (permalink / raw)
To: sisyphus
On Thu, 17 Oct 2002 06:10:51 +0400
at@turbinal.org wrote:
<skip />
> Увы, мы имеем дело с глюкавым софтом. Интереснее всего это проявляется в
> zsh:
>
> $ echo 123 | P=$(cat)
> cat: -: Input/output error
> $
>
> Зачем зишелл отыскал дэш там, где его нет, и почему, к тому же, не смог
> правильно открыть пайп, я не понимаю.
здесь: дэш = STD(IO|OUT), в силу моего разумения. А что, если не секрет, вы
хотите от этой конструкции? Этого?
bash:
[peet@admin2 peet]$ echo 123 | (P=`cat` && echo ">$P<")
>123<
[peet@admin2 peet]$ echo 123 | (P=$(cat) && echo ">$P<")
>123<
zsh:
peet@admin2 ~ $ echo 123 | (P=`cat` && echo ">$P<")
>123<
peet@admin2 ~ $ echo 123 | (P=$(cat) && echo ">$P<")
>123<
Или я не то понял? Если так, то "глюкавость софта" несколько
преувеличена... Хотя и непривычно, что zsh _требует_ подшелла для такой
подстановки, но мало ли - фича, на мой взгляд, причем из полезных. Если
посмотрите, то в баше без подшелла только _ошибки_ не будет, а $P все
равно останется [ -z ] :)))
[peet@admin2 peet]$ echo 123 | P=`cat` && echo ">$P<"
><
Так что по мне уж лучше ошибка, чем молчаливое недоумение.
--
Sincerely,
Peter V. Saveliev
E-mail: peet@eltel.net
Jabber: peet@jabber.ru
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [sisyphus] Re: bash 2
2002-10-17 2:44 ` Serge Pavlovsky
@ 2002-10-17 5:01 ` at
0 siblings, 0 replies; 7+ messages in thread
From: at @ 2002-10-17 5:01 UTC (permalink / raw)
To: Sisyphus
On Thu, Oct 17, 2002 at 05:44:35AM +0300, Serge Pavlovsky wrote:
> очевидно, что перенаправление влияет только на команду, а не на
> подстановку переменных.
Слово "влияет" недостаточно хорошо описывает суть процесса.
Я внимательнее прочитал bash(1). В частности, там сказано:
Each command in a pipeline is executed as a separate process (i.e., in a subshell).
Значит,
command1 | command2
эквивалентно
(command1) | (command2)
Увы, экспорт переменных из дочернего процесса невозможен.
Значит, никакого глюка нет.
Извиняюсь.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2002-10-17 5:01 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-15 19:04 [sisyphus] bash 2 at
2002-10-17 1:03 ` [sisyphus] " at
2002-10-17 1:16 ` Serge Pavlovsky
2002-10-17 2:10 ` at
2002-10-17 2:44 ` Serge Pavlovsky
2002-10-17 5:01 ` at
2002-10-17 3:21 ` Peter V. Saveliev
ALT Linux Sisyphus discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/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 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
public-inbox-index sisyphus
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sisyphus
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git