Bash: execute o comando2 se o comando1 falhar

30

Eu quero fazer algo assim:

if cmd1 && cmd2
echo success
else
echo epic fail
fi

Como devo fazer isso?

    
por michelemarcon 22.06.2011 / 11:28

2 respostas

64

Eles devem fazer o que você precisa:

cmd1 && cmd2 && echo success || echo epic fail

ou

if cmd1 && cmd2; then
    echo success
else
    echo epic fail
fi
    
por 22.06.2011 / 11:36
18

Petr Uzel está no local, mas você também pode jogar com a magia $ ?.

$? mantém o código de saída do último comando executado, e se você usar isso, você pode escrever seus scripts bem flexíveis.

Esta questão aborda este tópico um pouco, Prática recomendada para usar $? em bash? .

cmd1 
if [ "$?" -eq "0" ]
then
  echo "ok"
else
  echo "Fail"
fi

Então você também pode reagir a códigos de saída diferentes e fazer coisas diferentes, se quiser.

    
por 22.06.2011 / 12:17