Saltar al contenido

Probar si una variable está vacía en un script de shell

Nuestro grupo redactor ha estado por horas buscando respuestas a tus interrogantes, te compartimos la respuestas así que nuestro deseo es serte de mucha apoyo.

Algunos shells históricos implementaron un analizador muy simple que podría confundirse con cosas como [ -n = "" ] donde el primer operando a = parece un operador, y analizaría esto como [ -n = ] o causar un error de sintaxis. En [ "x$1" = x"" ]los x prefix asegura que x"$1" no puede parecerse a un operador, por lo que la única forma en que el shell puede analizar esta prueba es tratando = como operador binario.

Todos los shells modernos, e incluso la mayoría de los shells más antiguos que todavía están en funcionamiento, siguen las reglas POSIX que exigen que todas las expresiones de prueba de hasta 4 palabras se analicen correctamente. Entonces [ -z "$1" ] es una forma adecuada de probar si $1 esta vacioy [ "$x" = "$y" ] es una forma adecuada de probar la igualdad de dos variables.

Incluso algunos shells actuales pueden confundirse con expresiones más largas, y algunas expresiones son realmente ambiguas, así que evite usar el -a y -o operadores para construir pruebas booleanas más largas, y en su lugar usar llamadas separadas para [ y la propia concha && y || operadores booleanos.

Según http://www.mpi-inf.mpg.de/~uwe/lehre/unixffb/quoting-guide.html, el -z la prueba es inseguro en algunas implementacionespresumiblemente cuando cadenas “interesantes” como "-o a=a" son probados.

Las pruebas anteriores también generarán un error si se ejecuta con “set -u” o “set -o nounset”

Una forma más estable de buscar una variable vacía sería usar la expansión de parámetros:

MYVAR=$MYVAR:-“Valor incorrecto”

Este método funciona para el shell bourne tradicional, así como para ksh y bash.

Reseñas y puntuaciones de la guía

Tienes la opción de proteger nuestro estudio dejando un comentario o dejando una puntuación te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *