Experimentar:
my_command || { echo 'my_command failed' ; exit 1; }
Quatro mudanças:
- Mude
&&
para||
- Use
{ }
no lugar de( )
- Introduzir
;
depois exit
e
- espaços
{
antes e antes}
Como você deseja imprimir a mensagem e sair somente quando o comando falhar (sai com um valor diferente de zero), você ||
não precisa de um &&
.
cmd1 && cmd2
será executado cmd2
quando cmd1
for bem-sucedido (valor de saída 0
). Enquanto que
cmd1 || cmd2
será executado cmd2
quando cmd1
falhar (valor de saída diferente de zero).
Usar ( )
faz com que o comando dentro deles seja executado em um sub shell e chamar um exit
de lá faz com que você saia do sub shell e não do shell original; portanto, a execução continua no shell original.
Para superar esse uso { }
As duas últimas alterações são exigidas pelo bash.