!%20%3D%20(teste%20-z%20%24st)%2C%20certo%3F.png)
Enquanto eu lia,
test -n $string
==> O status de saída é 0 se $string
fornã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
Alguém pode dar uma explicação para esse comportamento estranho?
Responder1
Coloque $str
entre 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