2011-07-06 21 views

Respuesta

65

Por supuesto que sí. Después de reemplazar la variable, lee [ !-z ], que no es un comando [ válido. Use comillas dobles o [[.

if [ ! -z "$errorstatus" ] 

if [[ ! -z $errorstatus ]] 
+0

./test: Línea 2: operador binario condicional esperado ./test: línea 2: error de sintaxis cerca de '$ errorstatus ' ./test: línea 2:' if [[! -z $ errorstatus]]' Ya lo intenté, y se devuelve como a continuación, – Sreeraj

+0

Eso no es lo que escribí. –

+0

Gracias, por error, puse! -z juntos. – Sreeraj

19

¿Por qué usarías -z? Para comprobar si una cadena es no vacío, normalmente se utiliza -n:

 
if test -n "$errorstatus"; then 
    echo errorstatus is not empty 
fi 
+1

Obtengo mejores resultados en el uso de "! -z $ 1", donde trato de probar la existencia de un valor. Recibo un falso positivo cuando hago "-n $ ​​1", donde la condición es verdadera todo el tiempo, si hay un valor en $ 1 o no. – jaketrent

+3

@jtsnake 'test -n $ 1' es verdadero cuando $ 1 está vacío porque es equivalente a' test -n', que es verdadero porque la cadena '-n' no está vacía. (por ejemplo, '-n' no se toma como una opción, pero es la cadena que evalúa la prueba.)' test -n "$ 1" 'funciona bien, sin embargo. –

3

Creo que esta es la sintaxis que busca:

if [ -z != $errorstatus ] 
then 
commands 
else 
commands 
fi 
+2

Espera, ¿qué? 'test -z! =' ?? – Otheus

+0

el parámetro debe ser citado; de lo contrario, será una ecuación incompleta cuando la var esté vacía – ViaSat

Cuestiones relacionadas