ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Код возврата при конвейере
@ 2005-03-06 11:15 Vitaly Lipatov
  2005-03-06 17:14 ` Dmitry V. Levin
  0 siblings, 1 reply; 13+ messages in thread
From: Vitaly Lipatov @ 2005-03-06 11:15 UTC (permalink / raw)
  To: ALT Devel discussion list

Не могу понять, как узнать код возврата
программы при такой конструкции:

программа | tea 

Подскажите пожалуйста.

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


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

* Re: [devel] Код возврата при конвейере
  2005-03-06 11:15 [devel] Код возврата при конвейере Vitaly Lipatov
@ 2005-03-06 17:14 ` Dmitry V. Levin
  2005-03-06 17:39   ` Alexey Rusakov
  2005-03-06 17:53   ` Alexey I. Froloff
  0 siblings, 2 replies; 13+ messages in thread
From: Dmitry V. Levin @ 2005-03-06 17:14 UTC (permalink / raw)
  To: ALT Devel discussion list

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

Hi,

On Sun, Mar 06, 2005 at 02:15:40PM +0300, Vitaly Lipatov wrote:
> Не могу понять, как узнать код возврата
> программы при такой конструкции:
> 
> программа | tea 
> 
> Подскажите пожалуйста.

Кодом возврата pipeline'а является код возврата последней команды,
поэтому узнать код возврата других команд можно, например, так:

rm -f failed
(программа || touch failed) | tea
if [ -f failed ]; then
	обработка ошибки
fi


-- 
ldv

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

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

* Re: [devel] Код возврата при конвейере
  2005-03-06 17:14 ` Dmitry V. Levin
@ 2005-03-06 17:39   ` Alexey Rusakov
  2005-03-06 17:53   ` Alexey I. Froloff
  1 sibling, 0 replies; 13+ messages in thread
From: Alexey Rusakov @ 2005-03-06 17:39 UTC (permalink / raw)
  To: ALT Devel discussion list

Dmitry V. Levin wrote:

>Hi,
>
>On Sun, Mar 06, 2005 at 02:15:40PM +0300, Vitaly Lipatov wrote:
>  
>
>>Не могу понять, как узнать код возврата
>>программы при такой конструкции:
>>
>>программа | tea 
>>
>>Подскажите пожалуйста.
>>    
>>
>
>Кодом возврата pipeline'а является код возврата последней команды,
>поэтому узнать код возврата других команд можно, например, так:
>
>rm -f failed
>(программа || touch failed) | tea
>if [ -f failed ]; then
>	обработка ошибки
>fi
>  
>
При условии, что не требуется вывод tea писать в переменную, можно написать
RETVAL=`{ (программа ; echo $? >&5) | tea } 5>&1`
if [ $RETVAL ... ]; then
  ...
fi

Более громоздко, зато не требует наличия файловой системы вообще :)

-- 
  Alexey "Ktirf" Rusakov


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

* Re: [devel] Код возврата при конвейере
  2005-03-06 17:14 ` Dmitry V. Levin
  2005-03-06 17:39   ` Alexey Rusakov
@ 2005-03-06 17:53   ` Alexey I. Froloff
  2005-03-07 12:13     ` Alexey Rusakov
  2005-03-10  6:18     ` Alexey Tourbin
  1 sibling, 2 replies; 13+ messages in thread
From: Alexey I. Froloff @ 2005-03-06 17:53 UTC (permalink / raw)
  To: ALT Devel discussion list

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

* Dmitry V. Levin <ldv@> [050306 20:18]:
> Кодом возврата pipeline'а является код возврата последней команды,
> поэтому узнать код возврата других команд можно, например, так:
Интересно, почему у zsh на этот счёт более другое мнение:

raorn@hell:pts/15 ~ $ true | false | true | false | true | false | true
zsh: 6133 done       true | 
zsh: 6134 exit 1     false | 
zsh: 6135 done       true | 
zsh: 6136 exit 1     false | 
zsh: 6137 done       true | 
zsh: 6138 exit 1     false
raorn@hell:pts/15 ~ $ 

-- 
Regards,
Sir Raorn.

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

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

* Re: [devel] Код возврата при конвейере
  2005-03-06 17:53   ` Alexey I. Froloff
@ 2005-03-07 12:13     ` Alexey Rusakov
  2005-03-08 16:18       ` Alexey I. Froloff
  2005-03-10  6:18     ` Alexey Tourbin
  1 sibling, 1 reply; 13+ messages in thread
From: Alexey Rusakov @ 2005-03-07 12:13 UTC (permalink / raw)
  To: ALT Devel discussion list

Alexey I. Froloff wrote:

>* Dmitry V. Levin <ldv@> [050306 20:18]:
>  
>
>>Кодом возврата pipeline'а является код возврата последней команды,
>>поэтому узнать код возврата других команд можно, например, так:
>>    
>>
>Интересно, почему у zsh на этот счёт более другое мнение:
>
>raorn@hell:pts/15 ~ $ true | false | true | false | true | false | true
>zsh: 6133 done       true | 
>zsh: 6134 exit 1     false | 
>zsh: 6135 done       true | 
>zsh: 6136 exit 1     false | 
>zsh: 6137 done       true | 
>zsh: 6138 exit 1     false
>raorn@hell:pts/15 ~ $ 
>  
>
Как вы этого добились?
[ktirf@twilight ~/RPM]$ true|false|true|false|true|false|true
[ktirf@twilight ~/RPM]$ echo $SHELL
/bin/zsh
[ktirf@twilight ~/RPM]$ echo $ZSH_VERSION
4.2.1
[ktirf@twilight ~/RPM]$

-- 
  Alexey "Ktirf" Rusakov


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

* Re: [devel] Код возврата при конвейере
  2005-03-07 12:13     ` Alexey Rusakov
@ 2005-03-08 16:18       ` Alexey I. Froloff
  2005-03-08 17:34         ` Alexey Rusakov
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey I. Froloff @ 2005-03-08 16:18 UTC (permalink / raw)
  To: ALT Devel discussion list

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

* Alexey Rusakov <ktirf@> [050307 15:22]:
> >Интересно, почему у zsh на этот счёт более другое мнение:
> Как вы этого добились?
Наверно так:

$ setopt | grep exit
printexitvalue
$ echo $ZSH_VERSION 
4.2.1

-- 
Regards,
Sir Raorn.

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

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

* Re: [devel] Код возврата при конвейере
  2005-03-08 16:18       ` Alexey I. Froloff
@ 2005-03-08 17:34         ` Alexey Rusakov
  2005-03-08 20:03           ` Alexey I. Froloff
  0 siblings, 1 reply; 13+ messages in thread
From: Alexey Rusakov @ 2005-03-08 17:34 UTC (permalink / raw)
  To: ALT Devel discussion list

Alexey I. Froloff wrote:

>* Alexey Rusakov <ktirf@> [050307 15:22]:
>  
>
>>>Интересно, почему у zsh на этот счёт более другое мнение:
>>>      
>>>
>>Как вы этого добились?
>>    
>>
>Наверно так:
>
>$ setopt | grep exit
>printexitvalue
>$ echo $ZSH_VERSION 
>4.2.1
>  
>
А вы случайно не знаете, zsh этот самый exitvalue не может ли отдать в 
несколько менее prettyprint'нутом виде?

-- 
  Alexey "Ktirf" Rusakov


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

* Re: [devel] Код возврата при конвейере
  2005-03-08 17:34         ` Alexey Rusakov
@ 2005-03-08 20:03           ` Alexey I. Froloff
  2005-03-08 20:09             ` Alexey I. Froloff
  2005-03-08 21:51             ` [devel] " Dmitry V. Levin
  0 siblings, 2 replies; 13+ messages in thread
From: Alexey I. Froloff @ 2005-03-08 20:03 UTC (permalink / raw)
  To: ALT Devel discussion list

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

* Alexey Rusakov <ktirf@> [050308 20:36]:
> А вы случайно не знаете, zsh этот самый exitvalue не может ли отдать в 
> несколько менее prettyprint'нутом виде?
info zsh -> Parameters -> Parameters Set By The Shell:

pipestatus <S> <Z>
     An array containing the exit values returned by all commands in the
     last pipeline.

$ true | false | true | false | true | false | true      
zsh: 19417 done       true | 
zsh: 19418 exit 1     false | 
zsh: 19419 done       true | 
zsh: 19420 exit 1     false | 
zsh: 19421 done       true | 
zsh: 19422 exit 1     false
$ echo $pipestatus
0 1 0 1 0 1 0

-- 
Regards,
Sir Raorn.

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

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

* Re: [devel] Код возврата при конвейере
  2005-03-08 20:03           ` Alexey I. Froloff
@ 2005-03-08 20:09             ` Alexey I. Froloff
  2005-03-08 20:35               ` [devel] [JT] " Alexey Rusakov
  2005-03-08 21:51             ` [devel] " Dmitry V. Levin
  1 sibling, 1 reply; 13+ messages in thread
From: Alexey I. Froloff @ 2005-03-08 20:09 UTC (permalink / raw)
  To: ALT Devel discussion list

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

* Alexey I. Froloff <raorn@> [050308 23:09]:
> > А вы случайно не знаете, zsh этот самый exitvalue не может ли отдать в 
> > несколько менее prettyprint'нутом виде?
> info zsh -> Parameters -> Parameters Set By The Shell:
man bash:

PIPESTATUS
       An  array  variable (see Arrays below) containing a list of exit
       status values from the processes in  the  most-recently-executed
       foreground pipeline (which may contain only a single command).

-- 
Regards,
Sir Raorn.

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

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

* Re: [devel] [JT] Код возврата при конвейере
  2005-03-08 20:09             ` Alexey I. Froloff
@ 2005-03-08 20:35               ` Alexey Rusakov
  0 siblings, 0 replies; 13+ messages in thread
From: Alexey Rusakov @ 2005-03-08 20:35 UTC (permalink / raw)
  To: ALT Devel discussion list

Alexey I. Froloff wrote:

>* Alexey I. Froloff <raorn@> [050308 23:09]:
>  
>
>>>А вы случайно не знаете, zsh этот самый exitvalue не может ли отдать в 
>>>несколько менее prettyprint'нутом виде?
>>>      
>>>
>>info zsh -> Parameters -> Parameters Set By The Shell:
>>    
>>
>man bash:
>
>PIPESTATUS
>       An  array  variable (see Arrays below) containing a list of exit
>       status values from the processes in  the  most-recently-executed
>       foreground pipeline (which may contain only a single command).
>  
>
Век живи - век учись читать маны...

-- 
  Alexey "Ktirf" Rusakov


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

* Re: [devel] Код возврата при конвейере
  2005-03-08 20:03           ` Alexey I. Froloff
  2005-03-08 20:09             ` Alexey I. Froloff
@ 2005-03-08 21:51             ` Dmitry V. Levin
  2005-03-09  9:13               ` [devel] " Michael Shigorin
  1 sibling, 1 reply; 13+ messages in thread
From: Dmitry V. Levin @ 2005-03-08 21:51 UTC (permalink / raw)
  To: ALT Devel discussion list

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

On Tue, Mar 08, 2005 at 11:03:36PM +0300, Alexey I. Froloff wrote:
> * Alexey Rusakov <ktirf@> [050308 20:36]:
> > А вы случайно не знаете, zsh этот самый exitvalue не может ли отдать в 
> > несколько менее prettyprint'нутом виде?
> info zsh -> Parameters -> Parameters Set By The Shell:
> 
> pipestatus <S> <Z>
>      An array containing the exit values returned by all commands in the
>      last pipeline.
> 
> $ true | false | true | false | true | false | true      
> zsh: 19417 done       true | 
> zsh: 19418 exit 1     false | 
> zsh: 19419 done       true | 
> zsh: 19420 exit 1     false | 
> zsh: 19421 done       true | 
> zsh: 19422 exit 1     false
> $ echo $pipestatus
> 0 1 0 1 0 1 0

- это zsh-specific.

$ true | false | true | false | true | false | true; echo ${PIPESTATUS[*]}
0 1 0 1 0 1 0
- это bash-specific.

Обычный SUSv3 shell этого может и не уметь.


-- 
ldv

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

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

* [devel] Re: Код возврата при конвейере
  2005-03-08 21:51             ` [devel] " Dmitry V. Levin
@ 2005-03-09  9:13               ` Michael Shigorin
  0 siblings, 0 replies; 13+ messages in thread
From: Michael Shigorin @ 2005-03-09  9:13 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wed, Mar 09, 2005 at 12:51:03AM +0300, Dmitry V. Levin wrote:
> > $ echo $pipestatus
> > 0 1 0 1 0 1 0
> - это zsh-specific.

Ну, скрипт ведь тоже может быть #!/bin/zsh :)

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


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

* [devel] Re: Код возврата при конвейере
  2005-03-06 17:53   ` Alexey I. Froloff
  2005-03-07 12:13     ` Alexey Rusakov
@ 2005-03-10  6:18     ` Alexey Tourbin
  1 sibling, 0 replies; 13+ messages in thread
From: Alexey Tourbin @ 2005-03-10  6:18 UTC (permalink / raw)
  To: ALT Devel discussion list

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

On Sun, Mar 06, 2005 at 08:53:25PM +0300, Alexey I. Froloff wrote:
> Интересно, почему у zsh на этот счёт более другое мнение:
> 
> raorn@hell:pts/15 ~ $ true | false | true | false | true | false | true
> zsh: 6133 done       true | 
> zsh: 6134 exit 1     false | 
> zsh: 6135 done       true | 
> zsh: 6136 exit 1     false | 
> zsh: 6137 done       true | 
> zsh: 6138 exit 1     false
> raorn@hell:pts/15 ~ $ 

$ true | false | true | false | true | false | true
$ echo $?
0
$

> -- 
> Regards,
> Sir Raorn.

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

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

end of thread, other threads:[~2005-03-10  6:18 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-03-06 11:15 [devel] Код возврата при конвейере Vitaly Lipatov
2005-03-06 17:14 ` Dmitry V. Levin
2005-03-06 17:39   ` Alexey Rusakov
2005-03-06 17:53   ` Alexey I. Froloff
2005-03-07 12:13     ` Alexey Rusakov
2005-03-08 16:18       ` Alexey I. Froloff
2005-03-08 17:34         ` Alexey Rusakov
2005-03-08 20:03           ` Alexey I. Froloff
2005-03-08 20:09             ` Alexey I. Froloff
2005-03-08 20:35               ` [devel] [JT] " Alexey Rusakov
2005-03-08 21:51             ` [devel] " Dmitry V. Levin
2005-03-09  9:13               ` [devel] " Michael Shigorin
2005-03-10  6:18     ` Alexey Tourbin

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