Use &&operador,
cmd1 && cmd2 && cmd3
No shellscripting, &&e ||operadores são modelados após a implementação otimizada de operadores lógicos em C. &&significa operador AND e ||meio OR. O Unix está intimamente relacionado a C e, em C, o segundo operando de operadores lógicos não é avaliado se o resultado já for conhecido no primeiro operando. Por exemplo, "false && x"é falsepara qualquer um x, portanto não há necessidade de avaliar x(especialmente se xfor uma chamada de função); Da mesma forma para "true || x". Isso também é chamado de semântica de curto-circuito .
E no Unix, é tradicional interpretar os valores de retorno dos comandos como valores de verdade de "conclusão com êxito": código de saída 0 significa true(sucesso), diferente de zero false(falha). Portanto, quando o primeiro comando cmd1 && cmd2retornar "false"(status de saída diferente de zero, o que indica falha), o status do comando composto é conhecido: falha. Portanto, a interpretação geral de cmd1 && cmd2 pode ser: "execute cmd1E ENTÃO, se não falhar cmd2". Qual é o que você basicamente quer na sua pergunta.
Da mesma forma com OR: cmd1 || cmd2pode ser interpretado como "executar cmd1, OU SE falhar cmd2".
Protip: para cadeias mais longas &&, considere colocar set -eseu script. Basicamente, muda o ponto ;- e - vírgula para &&, com alguns casos especiais.