Bash Scripting: cómo verificar si la variable está establecida

En BASH, tenemos la capacidad de verificar si una variable está configurada o no. Podemos usar un par de argumentos en las declaraciones condicionales para verificar si la variable tiene un valor. En este artículo, veremos cómo verificar si la variable tiene un valor fijo/vacío usando ciertas opciones como -z, -v y -n.

Usando la opción “-v”

La opción -v nos permite comprobar si la variable está asignada o no. Podemos verificar la variable con la siguiente sintaxis,

[ -v variable_name ]

Podemos incrustar la sintaxis en declaraciones condicionales donde sea necesario, la opción -v básicamente devuelve verdadero si la variable proporcionada se ha declarado antes o no, independientemente de su valor. Podemos explorar los casos de una variable no vacía , no declarada y vacía en el siguiente script de ejemplo.

#!/bin/usr/env bash

k="Geek"

if [ -v k ];then
    echo "Variable is set"
else
    echo "Variable is not set"
if

Como podemos ver en el resultado anterior, la condición devuelve verdadero si la variable está definida . Incluso si la variable puede ser una string vacía, devolverá verdadero.

Ahora, en este ejemplo, la variable k no fue declarada. Por lo tanto, la opción -v devuelve falso y evaluamos la condición en consecuencia. 

En este último ejemplo, hemos declarado la variable k como una string vacía. Y esta vez, como se dijo, la opción -v devolverá verdadero si la variable se declaró antes, incluso si estaba vacía, verificará si la variable se declaró previamente o no. Por lo tanto, podemos concluir que la opción -v devuelve verdadero si la variable proporcionada se declara independientemente del valor que contenga.

Usando la opción “-z”

La opción -z nos permite comprobar si la variable tiene una longitud distinta de cero o no. Devuelve verdadero si la longitud del valor en la variable es cero (vacío). A diferencia de la opción -v, devolverá verdadero si la string está vacía. La sintaxis de este comando es un poco diferente e incómoda que otras opciones, 

[ -z "${variable_name}" ]

O

[[ -z ${variable_name} ]] 

Ambas sintaxis funcionan de manera un poco diferente en ciertas situaciones, como que no tiene que comillas dobles la variable si analiza declaraciones condicionales. La elección depende del usuario si la portabilidad en BASH es su prioridad, entonces la sintaxis “ [[ ” funciona muy bien. Veamos los ejemplos de casos en los que la variable no está vacía, no está declarada y está vacía en un script BASH de muestra.

#!/bin/usr/env bash

k="Geeks"

if [[ ! -z ${k} ]];then
   echo "Variable is not empty"
else
   echo "Variable is empty"
if

Hemos utilizado “ ! ” delante de -z para complementar la condición, esto se hace para proporcionar homogeneidad en la comprensión de diferentes opciones y argumentos. 

Nota: Las opciones -z devuelven verdadero si la longitud del valor de la variable es cero, y la opción -v devuelve verdadero si la variable se declaró antes (es decir, devuelve falso para variables vacías y no declaradas)

Como podemos ver, la opción -z devolvió falso, es decir, el valor de la variable no está vacío y, por lo tanto, imprimimos lo mismo. Ya que hemos usado el “ ! ” operador (no operador) obtenemos lo contrario de la expresión evaluada. 

Como se dijo, la opción -z devolvió verdadero , es decir, el valor de la variable está vacío . Como en la declaración condicional, el operador no invierte el resultado y decimos que la variable está vacía. 

En el ejemplo anterior, como la variable «k» no está definida ni declarada en ninguna parte, la opción -z devolverá verdadero ya que la variable en sí no existe . Así, hemos visto que la opción -z devuelve verdadero si el valor de la variable es de longitud cero o no está definida

Usando la opción “-n”

La opción -n es una especie de combinación de las opciones -v y -z, la opción -n devuelve verdadero si el valor de la variable proporcionada no está vacío. 

  • A diferencia de la opción -z que devuelve falso si el valor de la variable no está vacío.
  • Al igual que la opción -z, la opción -n devuelve falso si el valor se declara pero está vacío.
  • A diferencia de la opción -v, la opción -n devuelve falso si la variable se declara pero tiene un valor vacío.
  • Al igual que la opción -v, la opción -n devuelve verdadero si el valor de la variable no está vacío.

Veamos la sintaxis de la opción -n.

[ -n "${variable_name}" ]

O

[[ -n $variable_name ]] 

La sintaxis no es tan estricta como se dice, pero se recomienda para errores críticos en ciertas situaciones. 

Ahora, veremos los casos como valores no vacíos, no declarados y vacíos de las variables pasadas a la opción -n en el script BASH de muestra.

#!/bin/usr/env bash

k="Geeks"

if [[ -n $k ]];then
    echo "Variable is set"
else
    echo "Variable is not set"
if

La opción -n devolverá verdadero si el valor de la variable es distinto de cero. Si el valor está vacío o la variable no está declarada, devolverá falso.

Como podemos ver, la condición devolvió verdadero ya que el valor de la variable (k) no está vacío. 

En este ejemplo, como la variable (k) no fue declarada , la condición se evalúa como falsa y hacemos eco porque la variable no está configurada.

En el ejemplo anterior, la variable (k) está vacía y, por lo tanto, la condición que usa la opción -n se evalúa como falsa y hacemos eco del contexto según el requisito. 

A partir de los conjuntos de ejemplos anteriores, pudimos comprender las diferentes opciones como -z, -v y -n para verificar si la variable está configurada/vacía o no en un script BASH. La siguiente tabla se puede resumir para una comprensión clara de las tres opciones disponibles.

Valor de la opción no vacío vacío no declarado/no establecido
-v verdadero verdadero falso
-z falso verdadero verdadero
-norte verdadero falso falso

Modificadores para las opciones -z y -n

Podemos tener ciertos modificadores como +set y -unset para cambiar la forma en que las opciones evalúan la condición. Los veremos en ejemplos breves como se muestra a continuación.

+establecer modificador 

Podemos configurar el modificador +set a la opción -z para que solo devuelva verdadero si la variable no está declarada y devuelva falso para establecer y valores vacíos

[[ -z ${variable_name+set} ]]

Aplicaremos el modificador en el ejemplo y evaluaremos las diferentes condiciones de resultado generadas debido al modificador adjunto a la opción -z.

#!/bin/usr/env bash

k=""

if [[ ! -z ${k+set} ]];then
    echo "Variable is not empty"
else
    echo "Variable is empty"
if

Podemos ver que la opción -z junto con el modificador +set devuelve falso. Como se dijo anteriormente, usamos el “ ! ” para modificar la condición y evaluar los resultados en consecuencia. Por lo tanto, el modificador +set solo permite que los valores establecidos y vacíos de la variable sean verdaderos y los valores no establecidos como falsos al igual que la opción -v pero de forma inversa

Ahora, el modificador +set también se puede aplicar a la opción -n . Este modificador permitirá que la variable de conjunto vacío devuelva verdadero en lugar de falso

[[ -n ${variable_name+set} ]] 

Aplicaremos el modificador en el ejemplo y evaluaremos las diferentes condiciones de resultado generadas debido al modificador adjunto a la opción -n.

#!/bin/usr/env bash

k=""

if [[ -n ${k+set} ]];then
    echo "Variable is set"
else
    echo "Variable is not set"
if

El modificador +set se usa con la opción -n, esto permite que la variable set vacía evalúe el resultado como verdadero. Esto modifica la opción -n como la opción -v que también acepta la string vacía como verdadera.

El otro modificador es -unset , permite que los valores no establecidos de las variables devuelvan verdadero. La sintaxis del modificador -unset con la opción -z es la siguiente:

[[ -z ${variable_name-unset} ]]

Usaremos el mismo ejemplo para demostrar el uso del modificador -unset para la opción -z.

#!/bin/usr/env bash

if [[ ! -z ${k-unset} ]];then
    echo "Variable is not empty"
else
    echo "Variable is empty"
if

El modificador -unset permite que la opción -z acepte la variable no declarada como falsa . Esto puede no ser muy útil, pero aún está disponible si es necesario en ciertas situaciones.

Incluso podemos usar el modificador -unset en la opción -n. El modificador -unset permitirá que la opción -n acepte las variables no establecidas o no declaradas para evaluarlas como verdaderas . La sintaxis es similar para la opción -n con el modificador -unset.

[[ -n ${variable_name-unset} ]]

Evaluaremos el modificador con la opción -n con un ejemplo como se muestra a continuación:

#!/bin/usr/env bash

if [[ -n ${k-unset} ]];then
    echo "Variable is set"
else
    echo "Variable is not set"
if

Como podemos ver, la opción -n junto con el modificador -unset permite que la variable no establecida o no declarada devuelva la condición como verdadera. Por lo tanto, esta puede ser nuevamente una opción para verificar una condición provista de ciertas condiciones y restricciones variables no declaradas.

A continuación se muestra el gráfico modificado para resumir las siguientes opciones y modificadores.

Opciones\Valor no vacío vacío no establecido \ no declarado
-v verdadero verdadero falso
-z falso verdadero verdadero
-norte verdadero falso falso
-z + conjunto falso falso verdadero
-n +conjunto verdadero verdadero falso
-z -unset falso verdadero falso
-n -unset verdadero falso verdadero

Publicación traducida automáticamente

Artículo escrito por meetgor y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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