Qual é a diferença entre usar 'if condition then' e apenas 'condition && {}'

0

Eu estava me perguntando se existe alguma diferença prática entre escrever o seguinte bash:

if [ <some condition> ]; then
  <some statement>
fi

e o seguinte:

[ <some condition> ] && {
  <some statement>
}

Existe alguma diferença em como isso é executado ou são equivalentes?

    
por Lars Nyström 28.09.2018 / 20:17

3 respostas

1

Não há muita diferença lógica nem lingüística neste ponto. Mas se você crescer em algo maior, a sintaxe detalhada com if dará mais espaço para adicionar elif s e else . Se você se ativer aos operadores lógicos, será muito mais difícil de ler. Tente você mesmo.

Por exemplo, reescreva o seguinte usando && e / ou || .

if [ 1 -eq 2 ]; then echo ok; elif [ 1 -eq 1 ]; then echo lif; else echo el; fi
    
por 28.09.2018 / 20:48
0

Basicamente, eles são equivalentes. Em ambos os casos, a declaração é executada apenas se a condição for verdadeira.

É uma diferença de estilo, eu prefiro a primeira opção.

    
por 28.09.2018 / 20:23
0

Nem todos os shells suportam:

[ <some condition> ] && {
  <some statement>
}

Algumas shells estão suportando isto por um executável em / usr / bin / [.

Para testar se seu shell está usando / usr / bin / [apenas faça:

$ builtin [
sh: 1: builtin: not found

Isso significa que o shell está usando / usr / bin / [ mas se você obtiver algo mais, seu shell o suportará ...

Mas o bash tem o apoio.

    
por 28.09.2018 / 21:02

Tags