( prueba -n $st ) != ( prueba -z $st ) ¿verdad?

( prueba -n $st ) != ( prueba -z $st ) ¿verdad?

Mientras leo,

test -n $string==> El estado de salida es 0 si $stringes asíno nulo, 1 en caso contrario

y

test -z $string==> El estado de salida es 0 si$string es nulo, 1 en caso contrario

Pero en este ejemplo en particular (intenté crear una cadena nula) parece que me falta algo.

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

El resultado de esto es:

0
0

ingrese la descripción de la imagen aquí

¿Alguien puede dar una explicación para este extraño comportamiento?

Respuesta1

¡Pon $strcomillas dobles!

La prueba -n requiere que la cadena esté entre comillas entre corchetes de prueba. Usando una cadena sin comillas con ! -z, o incluso solo la cadena sin comillas dentro de los corchetes de prueba (consulte el Ejemplo 7-6) normalmente funciona; sin embargo, esta es una práctica insegura. Cita siempre una cadena probada.Otros operadores de comparación

información relacionada