![]() |
| |||||||
![]() |
| | LinkBack | Thread Tools | Search this Thread | Display Modes |
| |||
| I am not sure about on how to specify that a second command should only be execute in case that the first commnd fails/succeeds. When I enter: cmd1 | gzip -f ... && cmd2 Is then cmd2 executed only if cmd1 is finished successfully or if gzip is finished successfully? What if I want cmd2 only to execute if both (cmd1 and gzip) end successfully? What about the other way: cmd2 should only be executed if a) cmd1 failed b) cmd1 or gzip failed? Matthew |
| |||
| 2008-06-14, 08:28(+00), Matthew Lincoln: > I am not sure about on how to specify that a second command should only be execute in case > that the first commnd fails/succeeds. > > When I enter: > > cmd1 | gzip -f ... && cmd2 > > Is then cmd2 executed only if cmd1 is finished successfully or if gzip is finished successfully? > > What if I want cmd2 only to execute if both (cmd1 and gzip) end successfully? > > What about the other way: cmd2 should only be executed if > > a) cmd1 failed > > b) cmd1 or gzip failed? [...] With the zsh shell: setopt extendedglob cmd1 | gzip (( ${pipestatus[(I)^0]} )) || cmd2 Or: cmd1 | gzip (( $pipestatus[1] || $pipestatus[2] )) || cmd2 See question 11 in comp.unix.shell FAQ: http://cfaj.freeshell.org/shell/cus-faq-2.html#11 for more details. -- Stéphane |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
| |