Comando: [-z “”] && echo 0 || eco 1

0

A execução de [ -z "" ] && echo 0 || echo 1 fornece a saída 0 . O que é esse comando? Como isso é interpretado?

    
por Diganto Paul 31.12.2017 / 08:38

1 resposta

1

No bash (e shells similares), [ x ] && y || z é uma maneira abreviada idiomática de escrever if [ x ] ; then y ; else z ; fi , quando y é uma declaração simples que não pode / não pode ser avaliada como false . É útil quando você não quer perder 5 linhas de valioso espaço vertical de tela / editor para um teste simples.

Por "idiomática", quero dizer que é uma prática comum de programação shell. Um que aproveita a maneira como o AND lógico ( && ) e OR ( || ) funcionam no shell. y é executado se x for verdadeiro. z é executado se x for falso ... a captura é que z é também executado se x for true e y for executado, mas for avaliado como falso (isto é, retorna um código de saída diferente de zero) - é por isso que não deve ser usado se houver alguma chance de isso ocorrer. por exemplo. [ -z "" ] && false || echo 1 produz "1", mesmo que a condição -z "" seja verdadeira.

Em outras palavras, é (quase) equivalente a:

if [ -z "" ] ; then
  echo 0
else
  echo 1
fi

Esta construção if; then ... ; else ... ; fi de formulário completo não possui a mesma falha que o formulário de atalho. Esse constructo está correto e sempre funciona, enquanto o shorthand é um hack rápido e sujo que é útil em algumas circunstâncias limitadas.

-z testa se uma string está vazia.

Esse comando é em inglês:

If the empty string is empty then display "0", otherwise display "1".

Ele sempre exibirá "0".

    
por 31.12.2017 / 09:34

Tags