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

3

Enquanto eu leio,

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

e

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

Mas neste exemplo em particular, (tentei criar uma string nula) parece que estou perdendo 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?

    
por Severus Tux 17.05.2016 / 18:54

1 resposta

2

Coloque $str entre aspas duplas!

The -n test requires that the string be quoted within the test brackets. Using an unquoted string with ! -z, or even just the unquoted string alone within test brackets (see Example 7-6) normally works, however, this is an unsafe practice. Always quote a tested string. Other Comparison Operators

    
por 17.05.2016 / 19:07