Usar chaves para agrupar comandos (sem criar um subshell) funcionará:
command1 && { command2 && echo OK || echo FAIL2 } || echo FAIL1
Se command1
falhar, command2
não será exibido, você receberá apenas FAIL1
.
Eu também acho que essa construção não é muito legível. Eu acho que usar &&
funciona bem para casos simples, mas para condicionais mais complicados, eu prefiro usar if
declarações.