(teste -n $st)! = (teste -z $st), certo?

(teste -n $st)! = (teste -z $st), certo?

Enquanto eu lia,

test -n $string==> O status de saída é 0 se $stringfornão nulo, 1 caso contrário

e

test -z $string==> O status de saída é 0 se$string é nulo, 1 caso contrário

Mas neste exemplo específico (tentei criar uma string nula), parece que estou faltando alguma coisa.

#!/bin/sh
str=""
test -n $str
echo $?
test -z $str
echo $?

A saída disso é:

0
0

insira a descrição da imagem aqui

Alguém pode dar uma explicação para esse comportamento estranho?

Responder1

Coloque $strentre aspas duplas!

O teste -n requer que a string seja colocada entre colchetes de teste. Usando uma string sem aspas com ! -z, ou mesmo apenas a string sem aspas entre colchetes de teste (veja o Exemplo 7-6) normalmente funciona, entretanto, esta é uma prática insegura. Sempre cite uma string testada.Outros operadores de comparação

informação relacionada