Eu tenho um script de shell onde temos as seguintes linhas if [ -z "$xyz" ]
e if [ -n "$abc" ]
, mas não tenho certeza qual é o seu objetivo. Alguém pode explicar?
Eu tenho um script de shell onde temos as seguintes linhas if [ -z "$xyz" ]
e if [ -n "$abc" ]
, mas não tenho certeza qual é o seu objetivo. Alguém pode explicar?
Respostas:
Você pode encontrar uma referência muito agradável para os operadores do bash aqui . Se você estiver usando um shell diferente, basta procurar <my shell> operators
e você 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
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
man test
ou man [
lhe dará todas as opções para testar o comando. Nesse caso, -n está testando para verificar se o conteúdo de $ abc tem um comprimento diferente de zero e -z está testando para verificar se o conteúdo de $ xyz é uma sequência de comprimento zero.
man test
(sempre?) Fornece a página de manual da versão do programa externo, que (pelo menos para a versão GNU-coreutils) adverte explicitamente que alguns shells (na maioria IME) têm uma versão interna que pode ser diferente.