Eu quero fazer algo assim:
if cmd1 && cmd2
echo success
else
echo epic fail
fi
Como devo fazer isso?
bash
shell-script
exit-status
michelemarcon
fonte
fonte
Respostas:
Eles devem fazer o que você precisa:
ou
fonte
||
que não olha para a saída do primeiroecho
comando.Just try whoami && whoami && echo success || echo epic fail
e agorawhoami && whoareyou && echo success || echo epic fail
. Eu não posso descobrir o que você quer dizer com "não olha para a saída do primeiro comando echo"cmd1 && cmd2
Petr Uzel está no local, mas você também pode jogar com o $ $ mágico.
$? mantém o código de saída do último comando executado e, se você usar isso, poderá escrever seus scripts bastante flexíveis.
Esta pergunta aborda um pouco esse tópico, prática recomendada para usar $? na festança? .
Então você também pode reagir a diferentes códigos de saída e fazer coisas diferentes, se quiser.
fonte
O pseudocódigo na pergunta não corresponde ao título da pergunta.
Se alguém realmente precisar executar o comando 2 se o comando 1 falhar, esta é uma explicação simples:
cmd1 || cmd2
: Isso será executadocmd1
e, em caso de falha, será executadocmd2
cmd1 && cmd2
: Isso será executadocmd1
e, em caso de sucesso, será executadocmd2
cmd1 ; cmd2
: Isso será executadocmd1
e será executadocmd2
, independentemente da falha ou sucesso da execuçãocmd1
.fonte