GNU/Linux >> Tutoriales Linux >  >> Linux

Matriz asociativa en Bash

Cualquier programador sabe lo vitales que son las variables. Las variables actúan como estaciones de paso para codificadores/programadores donde pasan información de un lado a otro. Las variables son generalmente cruciales en computación ya que permiten que el código sea dinámico. En otros términos, las variables se conocen como marcadores de posición de información que cambian repetidamente según su uso. Sin embargo, un problema importante que ha afectado a la mayoría de los codificadores y programadores es realizar un seguimiento de muchas variables en un proyecto.

Esto tiende a ser una molestia para la mayoría de los programadores en el campo. Hay una solución definitiva a este problema que son las matrices. Una matriz en programación se conoce como una estructura de datos que almacena elementos con el mismo tipo de datos. Las matrices son ideales para el almacenamiento de una colección de datos. Las matrices son de gran importancia para casi todos los lenguajes de codificación, sin olvidar los lenguajes de secuencias de comandos como Bash. Este artículo se concentrará más en la matriz asociativa en Bash.

Se sabe que los lenguajes de secuencias de comandos de shell ofrecen a los usuarios la capacidad de crear, consultar, actualizar y manipular matrices indexadas. No se deje confundir por el término matrices indexadas, ya que es una lista de elementos que tienen un prefijo numérico. La lista más el número asignado está envuelto en una variable, lo que facilita la presentación de su código.

Array asociativo en Bash

El lenguaje de secuencias de comandos Bash tiene una ventaja adicional, ya que puede crear matrices asociativas y trata las matrices como una matriz normal. La función principal de una matriz asociativa le permite al usuario desarrollar listas que contienen claves/índices y valores en lugar de solo valores numerados. La función de matrices asociativas se ha incluido en bash 4, lo que significa que antes de comenzar, veremos la versión actual de Bash usando la siguiente línea de comando:

bash --version

Salida

Si su versión de bash no es la versión 4 o superior, deberá actualizarla para que funcione. No se preocupe, ya que los pasos a seguir son sencillos. Bash se puede actualizar en un servidor Ubuntu usando el famoso comando apt-get. Es posible que algunos usuarios necesiten actualizar su Bash y, para hacerlo, abra su terminal y ejecute los siguientes comandos:

sudo apt-get install --only-upgrade Bash

El comando actualizará bash shell a la versión más reciente en su sistema operativo Ubuntu. Para asegurarse de que la actualización se haya realizado correctamente, ejecute el comando anterior para verificar la versión instalada/actualizada del shell bash (Bash –version). Este comando imprimirá una consola con la versión actual de bash shell en su servidor Ubuntu.
Si, en algunos casos, no tiene Bash instalado en su servidor Ubuntu, no se asuste. Ejecute los siguientes comandos para instalar Bash:

sudo apt update
sudo apt install bash

Declaración e inicialización de una matriz asociativa

En Bash, una matriz asociativa se puede declarar usando la palabra clave 'declare'. Los elementos de la matriz, por otro lado, se pueden inicializar durante una declaración de matriz o después de la declaración de variables. La siguiente secuencia de comandos creará una matriz denominada assArray1, y los otros cuatro valores de la matriz se inicializarán individualmente como se indica

declare -A assArray1
assArray1[fruit]=Mango
assArray1[bird]=Cockatail
assArray1[flower]=Rose
assArray1[animal]=Tiger

Salida

Durante la declaración del arreglo, el siguiente script llamado assArray2 inicializará un arreglo asociativo. En el momento de la declaración, se definen tres valores de matriz con claves.

declare -A assArray2=( [HDD]=Samsung [Monitor]=Dell [Keyboard]=A4Tech )

Salida

Cómo acceder a la matriz asociativa

Hay dos formas en que un usuario puede acceder a una matriz asociativa. En primer lugar, se puede acceder a ellos individualmente y, en segundo lugar, se puede acceder a ellos mediante un bucle. No se preocupe por las formas mencionadas anteriormente, ya que se tratarán en el tutorial. Tenga en cuenta que las claves y los valores de una matriz se pueden imprimir juntos o por separado. Al especificar el valor clave, la siguiente línea de comando imprimirá dos valores de matriz. Usaremos assArray1 para ilustrar.

echo ${assArray1[bird]}
echo ${assArray1[flower]}

Salida

Verá una pantalla similar a la siguiente después de ejecutar las líneas de comando resaltadas anteriormente.

Al imprimir, a veces se le pedirá que imprima todas las claves y valores de una matriz. Esto se puede hacer usando una expansión de perímetro de bash o un bucle. Primero, echemos un vistazo a la impresión usando un bucle. Si ha estado en una clase de programación antes, debe haber encontrado este término por separado. Ejecute el siguiente comando para imprimir todas las claves y valores de una matriz.

for key in "${!assArray1[@]}"; do echo $key; done

Salida

El siguiente comando usará la expansión del parámetro bash para imprimir todas las claves y valores de una matriz

echo "${!assArray1[@]}"

Salida

Nota:el símbolo '!' en ambos comandos se usa para leer las claves de la matriz asociativa.

Por lo tanto, hemos visto que todos los valores de la matriz se pueden imprimir usando una expansión de parámetros de bash o un ciclo. A continuación se muestra otro ejemplo para profundizar en el uso de los dos métodos. El primer comando imprimirá los valores de la matriz usando un bucle, mientras que el segundo comando imprimirá los valores de la matriz usando una expansión de parámetros bash.

for val in "${assArray1[@]}"; do echo $val; done

Salida

echo "${assArray1[@]}"

Salida

Nota:el método de bucle se puede utilizar para imprimir tanto las claves como los valores de una matriz asociativa. A modo de ilustración, usaremos nuestra primera matriz, assArray1. En este método, cada clave de matriz debe analizarse en cada paso del ciclo. La clave utilizada se usa luego como el índice de matriz que ayuda a leer los valores de las claves correspondientes.
Ejecute la línea de comando a continuación

for key in "${!assArray1[@]}"; do echo "$key => ${assArray1[$key]}"; done

Salida

Cómo agregar datos a una matriz asociativa

Después de la declaración e inicialización de la matriz, es posible agregar nuevos elementos de matriz a una matriz asociativa. Usando nuestra segunda matriz, assArray2, se agregará un nuevo valor, "HP" y la tecla "Mouse" a la matriz, después de lo cual se volverán a verificar los elementos actuales de la matriz. Para completar los pasos mencionados anteriormente, ejecute los siguientes comandos

echo "${assArray2[@]}"
assArray2+=([Mouse]=Logitech)
echo "${assArray2[@]}"

Salida

Tendrá un resultado similar al que se muestra a continuación después de ejecutar los comandos anteriores.

Cómo eliminar datos de una matriz asociativa

Según el valor clave, se puede eliminar un valor de elemento en una matriz asociativa. Al eliminar datos, el comando "desarmar" es útil. El comando elimina datos particulares en una matriz asociativa. Por ejemplo, de nuestro assArray2, eliminemos el valor que contiene la clave 'Monitor'. El comando verificará si el valor tiene la clave 'Monitor'. Luego, con la ayuda del comando desarmado, el valor se eliminará. El comando 'echo' se usa para verificar y determinar si el valor se ha eliminado o no.

unset assArray2[Monitor]
echo ${assArray2[Monitor]}

Salida

Si el comando se ejecuta correctamente, tendrá un resultado similar al resaltado a continuación

Cómo encontrar un índice faltante en una matriz asociativa

Una declaración condicional, en este caso, es vital ya que ayuda a saber si falta un índice en una matriz. Por ejemplo, podemos verificar la clave de matriz 'Monitor' que eliminamos recientemente. Para hacerlo, ejecutaremos un comando de instrucción if para verificar si la clave existe o no. Recuerde, eliminamos la clave de nuestro ejemplo anterior. Por lo tanto, se debe imprimir el valor falso.

if [ ${assArray2[Monitor]+_} ]; then echo "Found"; else echo "Not found"; fi

Salida

Cómo eliminar una matriz asociativa

El comando 'unset' que se usa para eliminar datos de una matriz asociativa también se usa para eliminar una matriz asociativa. En este ejemplo, usaremos nuestra primera matriz, que es assArray1. El primer comando imprimirá los valores de la matriz. El segundo comando que contiene el comando 'unset' eliminará la matriz. El comando final verificará si la matriz existe o no. Si la matriz se eliminó correctamente, no habrá nada en la consola de salida.

echo "${assArray1[@]}"
unset assArray1
echo "${assArray1[@]}"

Salida

Matrices de datos

Para el almacenamiento de datos relacionados, las matrices son importantes. Es posible que deba usar variables para almacenar datos, pero no es la forma más adecuada de almacenar y realizar un seguimiento de grandes pistas de datos. Por lo tanto, para mantener sus datos más indexados y consolidados, deberá usar matrices. Además, el uso de matrices para almacenar y realizar un gran seguimiento de los datos es más eficiente que el uso de variables. Las matrices no necesitan una entrada para existir como en las variables. No debe preocuparse por la cantidad exacta de datos que se almacenarán antes de trabajar en ellos. Eso hace que las matrices sean ventajosas cuando se trata de datos extensos e impredecibles. En resumen, las matrices son mucho más potentes que las variables y se usan comúnmente en la mayoría de los lenguajes de programación y lenguajes de secuencias de comandos como Bash.

Conclusión

El uso de una matriz asociativa para el almacenamiento de datos es vital cuando se almacenan datos masivos que contienen pares clave-valor en Bash. El artículo ha cubierto cómo declarar e inicializar matrices asociativas, analizar claves y valores de matriz, agregar y eliminar elementos de matriz, eliminar una matriz asociativa y matrices de datos. Por lo tanto, esperamos que todos nuestros lectores ahora puedan implementar todos los temas tratados para mejorar su conocimiento y comprensión de las matrices asociativas. Pruébalo ahora.


Linux
  1. ¿Paréntesis simple en la asignación de variables Bash?

  2. Matrices bash con ejemplos

  3. Matriz en Bash no encontrada

  4. Bash capturando la salida de awk en una matriz

  5. Cómo declarar una matriz 2D en bash

Arreglos bash

Bash Shebang

Bash Scripting:matriz asociativa explicada con ejemplos

Bash Scripting:matriz indexada explicada con ejemplos

Bash Beginner Series #4:Uso de arreglos en Bash

Extraiga las rutas que faltan de la matriz de rutas de bash