Execute second command only if first fails/succeeds? - SSH

This is a discussion on Execute second command only if first fails/succeeds? - SSH ; 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 ...

+ Reply to Thread
Results 1 to 2 of 2

Thread: Execute second command only if first fails/succeeds?

  1. Execute second command only if first fails/succeeds?

    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

  2. Re: Execute second command only if first fails/succeeds?

    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

+ Reply to Thread