E se eu não quiser fazer nada em um bloco if-then mas algo em seu bloco else?

0
#intro
if [ -n "$1" ]
    then
        echo 666
    else
        echo 555
fi
exit;

Na verdade eu quero echo 555 enquanto não quero fazer nada no primeiro bloco, o que devo fazer? Percebi que não posso simplesmente remover echo 666 .

    
por AGamePlayer 04.09.2015 / 16:11

3 respostas

6

Apenas usando o no-op :

if [ -n "$1" ]; then
  :
else
  echo 555
fi
exit

ou inverta a lógica:

if [ -z "$1" ]; then
  echo 555
fi
exit
    
por 04.09.2015 / 16:13
3
[ -n "$1" ] && echo "666"  <= For if part
[ -n "$1" ] || echo "555"  <= For else part
    
por 04.09.2015 / 16:18
3

Você pode inverter uma instrução if usando ! (isso é chamado de operador 'not', o que significa ter o oposto do resultado) dentro da condicional. Então, [ -n "$1" ] se torna: [ ! -n "$1" ] , que é o mesmo que a seção else .

Também é válido usar a opção -z em vez de -n , que é logicamente inversa para -n , mas como regra geral, o ! sempre corresponderá a qualquer outra seção correspondente.

    
por 04.09.2015 / 17:48

Tags