Uso del Comando declare en Bash con Ejemplos

Published:

El comando declare en Bash se utiliza para definir, modificar y mostrar variables y funciones. Su propósito principal es establecer atributos específicos para variables y funciones, además de mostrar su estado actual. En este artículo, aprenderás cómo usar el comando declare en scripts de Bash con ejemplos prácticos en Linux.

Uso Básico del Comando declare

Definir una Variable

El comando declare se puede usar para definir variables con atributos específicos:

declare my_var="Hola, Mundo!"  
echo "$my_var"  

Esto funciona igual que una asignación de variable estándar, pero con la posibilidad de agregar atributos adicionales.

Convertir a Mayúsculas

Puedes usar la opción -u para convertir el valor de una variable a mayúsculas automáticamente:

declare -u upper_var="hola mundo"  
echo "$upper_var"  # Resultado: "HOLA MUNDO"  

Convertir a Minúsculas

De manera similar, la opción -l convierte el valor de una variable a minúsculas:

declare -l lower_var="HOLA MUNDO"  
echo "$lower_var"  # Resultado: "hola mundo"  

Listar Variables y sus Valores

Listar Todas las Variables

Para mostrar todas las variables declaradas y sus valores:

declare -p  

Mostrar una Variable Específica

Si solo necesitas ver una variable específica, usa:

declare -p my_var  

Esto mostrará algo como:

declare -- my_var="Hola, Mundo!"  

Atributos Especiales con declare

Hacer una Variable de Solo Lectura

El atributo -r establece una variable como de solo lectura, lo que impide su modificación:

declare -r readonly_var="Valor fijo"  
readonly_var="Nuevo valor"  # Esto causará un error  

Forzar una Variable a Ser un Entero

Con -i, puedes definir que una variable sea tratada como un número:

declare -i num=10  
num+=5  
echo "$num"  # Resultado: 15  
num="hola"  
echo "$num"  # Resultado: 0 (valor por defecto)  

Crear un Arreglo Indexado

El atributo -a define un arreglo indexado:

declare -a my_array=("manzana" "plátano" "cereza")  
echo "${my_array[@]}"  # Resultado: manzana plátano cereza  

Para acceder a elementos específicos:

echo "${my_array[0]}"  # Resultado: manzana  

Crear un Arreglo Asociativo

Con -A (disponible desde Bash 4+), puedes crear arreglos asociativos:

declare -A my_assoc_array=([fruta]="manzana" [color]="rojo")  
echo "${my_assoc_array[fruta]}"  # Resultado: manzana  
echo "${!my_assoc_array[@]}"  # Resultado: fruta color  

Exportar Variables a Subshells

Para que una variable esté disponible en procesos secundarios, utiliza -x:

declare -x my_env_var="Valor exportado"  
bash -c 'echo "$my_env_var"'  # Resultado: Valor exportado  

Gestión de Funciones con declare

Definir y Listar Funciones

Puedes usar declare para gestionar funciones. Por ejemplo, para listar todas las funciones:

declare -f  

O solo los nombres de las funciones:

declare -F  

Exportar Funciones

Con -xf, puedes exportar funciones a procesos secundarios:

declare -xf my_function  

Verificar Existencia de Variables o Funciones

El comando declare también permite verificar si una variable o función existe:

if declare -p variable_name &>/dev/null; then  
    echo "La variable existe"  
fi  

Eliminar Atributos

Puedes usar + en lugar de - para eliminar atributos:

declare +i num  
num="hola"  
echo "$num"  # Resultado: hola  

Desactivar Variables y Funciones

Para eliminar variables o funciones, usa unset:

unset my_var  
unset -f my_function  

Resumen de Opciones de declare

  • -a: Declara un arreglo indexado.
  • -A: Declara un arreglo asociativo (Bash 4+).
  • -i: Declara una variable como entero.
  • -r: Declara una variable o función como de solo lectura.
  • -x: Exporta una variable o función al entorno.
  • -f: Muestra las definiciones de funciones.
  • -F: Muestra solo los nombres de las funciones.
  • -l: Convierte el valor a minúsculas.
  • -u: Convierte el valor a mayúsculas.

Conclusión

El comando declare es una herramienta poderosa en Bash que permite gestionar variables y funciones de manera eficiente, definiendo atributos especiales y mejorando el control sobre los scripts. Es ideal para trabajar con enteros, arreglos y variables de solo lectura, además de gestionar funciones con facilidad. Con estas opciones, puedes optimizar y estructurar mejor tus scripts en Linux.

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles