Script do shell: -z e -n opções com if

22

Eu tenho um shell script no qual temos as seguintes linhas if [ -z "$xyz" ] e if [ -n "$abc" ] , mas não tenho certeza qual é o propósito delas. Alguém por favor pode explicar?

    
por user3173953 16.01.2014 / 14:55

2 respostas

31

Você pode encontrar uma referência muito boa para os operadores do bash aqui . Se você estiver usando um shell diferente, basta procurar por <my shell> operators e encontrará tudo o que precisa. No seu caso particular, você está usando:

-n
   string is not null.

-z
  string is null, that is, has zero length

Para ilustrar:

$ foo="bar";
$ [ -n "$foo" ] && echo "foo is not null"
foo is not null
$ [ -z "$foo" ] && echo "foo is null"
$ foo="";
$ [ -n "$foo" ] && echo "foo is not null"
$ [ -z "$foo" ] && echo "foo is null"
foo is null
    
por 16.01.2014 / 15:14
3

man test ou man [ dará a você todas as opções para testar o comando. Nesse caso, -n está testando para ver se o conteúdo de $ abc tem um comprimento diferente de zero e -z está testando para ver se o conteúdo de $ xyz é uma cadeia de comprimento zero.

    
por 16.01.2014 / 15:03