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?
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:
Puede encontrar una muy buena referencia para los operadores de bash aquí . Si está utilizando un shell diferente, solo busque <my shell> operators
y 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
man test
o 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 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.