Matriz asociativa en Bash

Matriz asociativa en Bash

Se utiliza una variable de matriz para almacenar múltiples datos con índice y el valor de cada elemento de matriz se accede mediante el valor del índice correspondiente de ese elemento. La matriz que puede almacenar el valor de la cadena como índice o clave se llama matriz asociativa. Se puede declarar y utilizar una matriz asociativa en script bash como otros lenguajes de programación. Esta característica se agrega en Bash 4. Cómo se puede declarar y acceder a la matriz asociativa en Bash se explica en este tutorial.

Consulte la versión actual de Bash antes de comenzar la siguiente parte de este tutorial. Ejecute el siguiente comando desde el terminal para verificar la versión instalada de Bash. Si la versión bash instalada en su sistema operativo es inferior a 4, entonces debe instalar la versión 4 de Bash primero para continuar este tutorial.

$ Bash -Versión

La siguiente salida muestra que la versión actual de Bash es 4.4.19.

Declarar e inicializar la matriz asociativa:

Se puede declarar una matriz asociativa en BASH utilizando el declarar La palabra clave y los elementos de la matriz se pueden inicializar en el momento de la declaración de matriz o después de declarar la variable de matriz. El siguiente script creará una matriz asociativa llamada Assarray1 y los cuatro valores de matriz se inicializan individualmente.

$ declarar -a assArray1
$ ASSArray1 [fruta] = mango
$ AssArray1 [pájaro] = cacatúa
$ AssArray1 [flor] = rosa
$ ASSArray1 [Animal] = Tiger

Producción

El siguiente script inicializará la matriz asociativa, Assarrat2 En el momento de la declaración de matriz. Aquí, tres valores de matriz con claves se definen en el momento de la declaración de matriz.

$ declare -a assArray2 = ([hdd] = samsung [monitor] = Dell [teclado] = a4tech)

Producción:

Acceder a la matriz asociativa:

Se pueden acceder a los elementos de matriz de una matriz asociativa individualmente o utilizando cualquier bucle. Estas dos formas se muestran en esta parte del tutorial. Las teclas y los valores de matriz se pueden imprimir por separado y juntas.

Los siguientes comandos imprimirán dos valores de la matriz, Assarray1 (declarado anteriormente) especificando el valor clave.

$ Echo $ AssArray1 [pájaro]
$ Echo $ AssArray1 [flor]

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

A veces, se requiere imprimir todas las claves o todos los valores de la matriz. Todas las claves de una matriz se pueden imprimir utilizando la expansión de los parámetros de bucle o bash. El siguiente primer comando imprimirá todas las claves de la matriz en cada línea usando para bucle y el segundo comando imprimirá todas las teclas de matriz en una línea utilizando la expansión del parámetro BASH. Aquí, '!'Se usa el símbolo para leer las claves de la matriz asociativa.

$ para la clave en "$ !AssArray1 [@] "; Do Echo $ Key; hecho
$ echo "$ !AssArray1 [@] "

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Todos los valores de una matriz se pueden imprimir utilizando la expansión de los parámetros de bucle o bash. El siguiente primer comando imprimirá todos los valores de la matriz en cada línea usando para bucle y el segundo comando imprimirá todos los valores de matriz en una línea utilizando la expansión del parámetro BASH.

$ para val en "$ assArray1 [@]"; hacer eco $ val; hecho
$ echo "$ assArray1 [@]"

Producción:

La siguiente salida aparecerá después de ejecutar los comandos anteriores.

Tanto las claves como los valores de una matriz asociativa se pueden imprimir usando para bucle. El siguiente script imprimirá todos los valores con claves de la matriz asociativa nombrada Assarray1. Aquí, cada clave de la matriz se analizará en cada paso del bucle for For y la clave se usa como índice de la matriz para leer el valor de la clave correspondiente.

$ para la clave en "$ !AssArray1 [@] "; do echo" $ key => $ assArray1 [$ key] "; hecho

Producción:

La siguiente salida aparecerá después de ejecutar el script.

Agregar nuevos datos en la matriz asociativa:

Un nuevo elemento de matriz se puede agregar fácilmente en la matriz asociativa después de declarar e inicializar la matriz. Los siguientes comandos verificarán los valores de la matriz actual de la matriz, Assarray2, Agregue un nuevo valor, "Logitech"Con la llave,"Ratón"Y nuevamente verifique los elementos actuales de la matriz.

$ echo "$ assArray2 [@]"
$ AssArray2+= ([mouse] = logitech)
$ echo "$ assArray2 [@]"

Producción:

La siguiente salida aparecerá después de ejecutar los comandos.

Eliminar datos de la matriz asociativa:

Cualquier valor de elemento de la matriz asociativa se puede eliminar en función del valor clave. El comando 'unset' se utiliza para eliminar el valor particular de la matriz asociativa. Se utilizan los siguientes comandos Verifique el valor actual de la matriz con la clave ","Monitor", Elimine el valor usando el comando unset y ejecute nuevamente el comando 'echo' para verificar el valor se elimina o no. $ Echo $ AssArray2 [Monitor]

$ Unset AssArray2 [Monitor]
$ Echo $ AssArray2 [Monitor]

Producción:

La siguiente salida aparecerá después de ejecutar los comandos.

Encontrar un índice faltante de la matriz asociativa:

Se puede encontrar un índice o la clave faltante de una matriz utilizando una declaración condicional. El siguiente script verificará la tecla de matriz, "Monitor" existe o no. El valor de esta clave se elimina en el ejemplo anterior. Entonces, la condición 'si' devolverá el mensaje falso y "no encontrado" se imprimirá.

$ if [$ AssArray2 [monitor]+_]; Entonces echo "encontrado"; el más eco "no encontrado"; FI

Producción:

La siguiente salida aparecerá después de ejecutar el script.

Eliminación de la matriz asociativa:

Cualquier matriz asociativa se puede eliminar utilizando el comando 'unset'. El siguiente primer comando imprimirá todos los valores de la matriz nombrada Assarray1 en una sola línea si la matriz existe. El segundo comando eliminará la matriz. El tercer comando se usa para verificar la matriz o eliminar. Si se elimina la matriz, entonces no aparecerá ninguna salida.

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

Producción:

La siguiente salida aparecerá después de ejecutar los comandos.

Conclusión

Cuando se requiere almacenar múltiples datos del par de valores clave en Bash, entonces es mejor usar la matriz asociativa para almacenar los datos. Cómo el codificador puede declarar e inicializar la matriz asociativa, las teclas o valores de matriz de análisis o ambos, agregar y eliminar elementos de matriz y eliminar la matriz se muestran en este tutorial utilizando varios scripts. Espero que el lector pueda usar una matriz asociativa en Bash correctamente después de leer este tutorial.