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"
é false
para qualquer um x
, portanto não há necessidade de avaliar x
(especialmente se x
for 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 && cmd2
retornar "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 cmd1
E ENTÃO, se não falhar cmd2
". Qual é o que você basicamente quer na sua pergunta.
Da mesma forma com OR: cmd1 || cmd2
pode ser interpretado como "executar cmd1
, OU SE falhar cmd2
".
Protip: para cadeias mais longas &&
, considere colocar set -e
seu script. Basicamente, muda o ponto ;
- e - vírgula para &&
, com alguns casos especiais.