Quais são os prós e contras do uso de && ou || versus if / elif / else?

0

No bash, posso fazer uma condição de teste utilizar & & e / ou || em vez de um bloco if / elif / else.

Quando aplicável, uso tendem a usar & & e / ou || em vez de construir um bloco if. Há alguma vantagem do mundo real para um construto sobre o outro?

Considere os seguintes exemplos:

1)

[[ -f /shared_disk/backups/daily.tar.bz2 ]] && echo "the coast is clear" || echo "run the dump"

2)

if [[ -f /shared_disk/backups/daily.tar.bz2 ]]; then
    echo "the coast is clear"
else
    echo "run the dump"
fi
    
por derek_jenkins 16.09.2017 / 05:47

1 resposta

5

As duas formas que você apresenta não são exatamente iguais.

No formulário: A && B || C , C será executado se A ou B avaliar como falso.

Por exemplo:

$ true && true || echo C
$ true && false || echo C
C
$

Isso oferece uma vantagem real do formulário if-then-else sobre a forma A && B || C e isso é clareza. É mais claro o que a forma if-then-else está fazendo, mas você precisa entender as regras de avaliação para entender o que a forma A && B || C está fazendo.

No entanto, pode ser útil usar A && B ou A || B . Isso é mais claro e pode ser útil quando comandos simples estão sendo executados. Às vezes, uma linha em vez de três é mais clara, especialmente quando você está tentando obter uma grande quantidade de código.

    
por 16.09.2017 / 06:52