Use && operator,
cmd1 && cmd2 && cmd3
Em shellscripting, os operadores && e || são modelados após a implementação otimizada dos operadores lógicos em C. && significa operador AND e || significa OR. Unix está estreitamente relacionado a C, e em C, o segundo operando de operadores lógicos não é avaliado se o resultado já é conhecido do primeiro operando. Por exemplo. "false && x" é false para qualquer x , portanto, não há necessidade de avaliar x (especialmente se x for alguma expressão booleana complexa); similarmente 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 verdadeiros de "conclusão bem-sucedida": código de saída 0 significa true (sucesso), diferente de zero significa false (falha). Portanto, quando o primeiro comando em cmd1 && cmd2 retorna "false" (status de saída diferente de zero, que indica falha), o status do comando composto é conhecido: falha. Portanto, a interpretação geral de cmd1 && cmd2 pode ser: "execute cmd1 , E ENTÃO, se não falhar, cmd2 ". O que você basicamente quer em sua pergunta.
Da mesma forma com OR: cmd1 || cmd2 pode ser interpretado como "execute cmd1 , OU SE falhar, cmd2 ".
Protip: para cadeias mais longas de && , considere colocar set -e em seu script. Ele basicamente altera o ponto-e-vírgula ; para && , com alguns casos especiais.