Scripting de shell: opciones -z y -n con if


55

Tengo un script de shell donde tenemos las siguientes líneas if [ -z "$xyz" ]y if [ -n "$abc" ], pero no estoy seguro de cuál es su propósito. ¿Alguien puede explicar?

Respuestas:


66

Puede encontrar una muy buena referencia para los operadores de bash aquí . Si está utilizando un shell diferente, solo busque <my shell> operatorsy encontrará todo lo que necesita. En su caso particular, está utilizando:

-n
   string is not null.

-z
  string is null, that is, has zero length

Para ilustrar:

$ foo="bar";
$ [ -n "$foo" ] && echo "foo is not null"
foo is not null
$ [ -z "$foo" ] && echo "foo is null"
$ foo="";
$ [ -n "$foo" ] && echo "foo is not null"
$ [ -z "$foo" ] && echo "foo is null"
foo is null

3

man testo man [le dará todas las opciones para probar el comando. En este caso, -n está probando para ver si el contenido de $ abc tiene una longitud distinta de cero y -z está probando para ver si el contenido de $ xyz es una cadena de longitud cero.


man [no funciona para mí en GNU bash, versión 4.1.2 (1) -release (x86_64-redhat-linux-gnu). Pero +1 para prueba de hombre.
Andrew Lorien

1
Nota man test(¿siempre?) Proporciona la página de manual para la versión del programa externo, que (para la versión de GNU-coreutils al menos) advierte explícitamente que algunos shells (la mayoría de IME) tienen una versión integrada que puede ser diferente.
dave_thompson_085
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.