ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
* [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