if else statement em uma linha usando && e ||

7

Gostaria de saber se essas duas formas são equivalentes:

Primeiro:

#!/bin/bash
if [ -x $FILE ]
then
  echo "You have execution permission to a "$FILE""
else
  echo "You don't have execution permission to a "$FILE""
fi

Segundo:

#!/bin/bash
[ -x $FILE ] && echo "You have execution permission to a "$FILE"" || echo "You don't have execution permission to a "$FILE""
    
por user3014282 22.05.2014 / 01:34

1 resposta

5

As estruturas não são equivalentes em geral, mas neste caso são. A razão é que echo sempre tem o código de saída 0. Se esse foi um comando que pode sair com um código maior que zero, então "o outro ramo" também seria executado. Isso é impossível no caso if .

    
por 22.05.2014 / 01:46