Diferença entre executar múltiplos comandos com && e; [duplicado]

29

Qual é a diferença entre a execução de vários comandos com && e ; ?

Exemplos:

echo "Hi\!" && echo "How are you?"

e

echo "Hi\!"; echo "How are you?"
    
por Zach Latta 10.11.2013 / 23:52

2 respostas

35

No shell, && e ; são semelhantes, pois ambos podem ser usados para finalizar comandos. A diferença é && também é um operador condicional. Com ; o seguinte comando é sempre executado, mas com && o último comando é executado apenas se o primeiro for bem-sucedido.

false; echo "yes"   # prints "yes"
true; echo "yes"    # prints "yes"
false && echo "yes" # does not echo
true && echo "yes"  # prints "yes"

Novas linhas são intercambiáveis com ; ao finalizar comandos.

    
por 11.11.2013 / 00:00
2

&& e || são operadores booleanos. & & é o operador lógico AND, e o bash usa shortcut evaluation , então o segundo comando só é executado se houver a chance de que toda a expressão possa ser verdadeira. Se o primeiro comando for considerado falso (retornado com um código de saída diferente de zero), a expressão AND inteira nunca poderá se tornar verdadeira, portanto, não há necessidade de avaliar o segundo comando.

A mesma lógica se aplica analogamente ao OR lógico, ||: se o primeiro comando for bem sucedido, toda a expressão OR se tornará verdadeira, então não há necessidade de avaliar o segundo comando.

    
por 02.04.2014 / 15:00

Tags