%20!%3D%20(%20prueba%20-z%20%24st%20)%20%C2%BFverdad%3F.png)
Mientras leo,
test -n $string
==> El estado de salida es 0 si $string
es 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
¿Alguien puede dar una explicación para este extraño comportamiento?
Respuesta1
¡Pon $str
comillas 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