¿Qué son los diccionarios Bash en Linux y cómo se utilizan?

Una computadora portátil estilizada que muestra una terminal con líneas de texto.

fatmawati achmad zaenuri / Shutterstock.com



Los diccionarios Bash le brindan mapas hash y matrices asociativas en scripts de shell de Linux. Le mostraremos cómo utilizar estas poderosas y útiles estructuras de datos en sus propios scripts de shell de Linux.

Una rosa con cualquier otro nombre

¿Qué es Bash Shell y por qué es tan importante para Linux? RELACIONADO ¿Qué es Bash Shell y por qué es tan importante para Linux? El nombre formal de los diccionarios es matrices asociativas. También se denominan tablas hash y mapas hash. Son una estructura de datos que funciona de manera similar a una matriz regular, pero con una diferencia significativa.





Una matriz es una colección de valores de datos que se encuentran en una estructura de datos. Para acceder a cualquiera de los valores de datos, que se conocen como elementos de matriz, debe conocer su posición en la matriz. La posición de un elemento de la matriz en la matriz se conoce como su índice, por lo que estos tipos de matrices se conocen como matrices indexadas. Son el tipo de matrices más utilizado.

Sin embargo, tienen un inconveniente. ¿Cómo accede a un elemento de matriz si no conoce su posición dentro de la lista? Debe ejecutar todos los elementos de la matriz, probando para ver si el valor en esa ubicación es el que está buscando.



Las matrices asociativas superan ese problema. No utilizan números enteros para identificar elementos de matriz de forma única. Usan palabras únicas conocidas como palabras clave. Puede recuperar el valor de un elemento de matriz mediante el uso de su palabra clave, independientemente de dónde se encuentre dentro de la matriz. Con una matriz indexada, los números enteros que representan las posiciones dentro de la matriz están en orden ascendente. Las palabras clave en una matriz asociativa pueden estar en cualquier orden.

Puede buscar un valor en una matriz asociativa buscando con su palabra clave. Buscar una palabra y recuperar su valor asociado simula buscar una palabra en un diccionario y encontrar su significado. Es por eso que las matrices asociativas se conocen como diccionarios.

Bash 4.0 o superior

Las matrices asociativas se admiten en el caparazón de Bash versión 4.0 o superior. Si está utilizando una distribución de Linux actual, debería estar bien. Para verificar su versión de Bash, use este comando:



|_+_|

Anuncio publicitario

La máquina utilizada para investigar este artículo tiene Bash 5.1.4 instalado, así que estamos listos para comenzar.

Principios básicos

Para crear una matriz asociativa en la línea de comandos de la terminal o en un script, usamos el comando Bash declare. El -A La opción (asociativa) le dice a Bash que será una matriz asociativa y no una matriz indexada.

|_+_|

Esto crea una matriz asociativa llamada siglas.

Para poner algunos datos en nuestra matriz, necesitamos proporcionar palabras clave y valores. Podemos hacer esto usando este formato:

|_+_|

Agreguemos algunos elementos de la matriz:

|_+_| |_+_| |_+_| |_+_| |_+_|

Esos comandos definen cinco elementos de la matriz. Tenga en cuenta que los valores están entre comillas si hay espacios en el valor. Nuestras palabras clave se ingresaron en orden alfabético, pero se pueden ingresar en el orden que desee. Las palabras clave deben ser únicas. Si intenta crear dos entradas con la misma palabra clave, el segundo valor que ingrese sobrescribirá al primero. Seguirá teniendo solo una entrada con esa palabra clave y se asociará con el segundo valor que agregó.

Para recuperar valores de la matriz, usamos comandos en este formato:

|_+_|Anuncio publicitario

Podemos usar echo para enviar la salida a la ventana de la terminal:

|_+_| |_+_|

Usar bucles

Las matrices se prestan muy bien para ser utilizadas en bucles. Las matrices asociativas no son una excepción. Los bucles proporcionan formas eficientes de invocar una secuencia de acciones sin secciones repetitivas de código. Antes de analizar los bucles, existe una forma eficaz de declarar matrices.

Creamos las matrices usando declare comando (la misma opción -A que antes), pero proporcionamos las palabras clave y los valores como una lista en la línea de comando.

|_+_|

El nombre de la matriz es países y está conectado a la lista de valores mediante un signo igual =. La lista de valores está entre paréntesis () y cada palabra clave se incluye entre corchetes []. Tenga en cuenta que no hay comas que separen los valores. Si tiene una cadena de valor que contiene espacios, deberá ponerla entre comillas.

Para hacer que una matriz asociativa devuelva una palabra clave en lugar del valor, agregue un signo de exclamación ! delante del nombre de la matriz. El símbolo arroba @ se puede utilizar como comodín, es decir, todos los elementos de la matriz.

Esto for bucle enumerará todas las palabras clave:

|_+_|

Tenga en cuenta que las palabras clave no se enumeran necesariamente en el orden en que se crearon, pero eso no importa. Las matrices asociativas no se basan en un índice ordenado.

Anuncio publicitario

También podemos utilizar la expansión de parámetros para enumerar todas las palabras clave. Se enumerarán en una línea, no una por línea.

|_+_| |_+_|

Podemos aumentar nuestro for bucle para imprimir las palabras clave y los valores al mismo tiempo.

|_+_|

Si queremos saber cuántos elementos hay en las matrices, podemos usar un hash # delante del nombre de la matriz en lugar de un signo de exclamación.

|_+_| |_+_|

Comprobación de que existe un elemento de matriz

Si busca una palabra clave pero no existe tal elemento de matriz, el valor de retorno será una cadena vacía. A veces es útil tener un indicador diferente para la presencia o ausencia de un elemento de matriz.

Podemos verificar la presencia de un elemento de matriz usando +_ operador. Tenga en cuenta que viene después de la palabra clave, no delante del nombre de la matriz como los operadores anteriores que hemos visto.

|_+_| |_+_|

El elemento de la matriz con la palabra clave EOF se encuentra en la matriz, pero el elemento de la matriz con la palabra clave FTP no.

Adición de elementos de matriz

Agregar nuevos elementos a una matriz asociativa es fácil. A diferencia de algunos lenguajes de programación, no necesita definir el tamaño de su matriz cuando la declara. Puede seguir agregando nuevos elementos sin alcanzar un límite superior predefinido.

Anuncio publicitario

Para agregar un nuevo elemento a la matriz, usamos el += operador.

|_+_| |_+_| |_+_|

El número de elementos en la matriz ahora es seis, y la búsqueda de la nueva palabra clave encuentra el elemento de la matriz y devuelve su valor.

Eliminación de matrices y elementos de matriz

El unset El comando se usa para eliminar elementos de la matriz. Si la palabra clave tiene espacios, envuélvala entre comillas.

|_+_| |_+_|

Para eliminar toda la matriz, use unset con el nombre de la matriz.

|_+_|

Usar variables con matrices

Usar variables con matrices asociativas es sencillo. En este ejemplo, configuraremos una clave de variable para la cadena EOF. Usaremos la variable cuando agreguemos un nuevo elemento de matriz a la matriz. De hecho, estamos reemplazando el elemento de matriz que borramos anteriormente.

Recuperaremos el nuevo elemento de matriz llamándolo con la nueva palabra clave y también, usando la variable. Si la palabra clave contiene espacios, deberá colocar el nombre de la variable entre comillas.

|_+_| |_+_| |_+_| |_+_|

Se creativo

Nuestros ejemplos han sido colecciones de información donde cada elemento de la matriz es independiente de todos los demás, como un diccionario. Cada uno es una definición única. Pero los arreglos asociativos pueden contener fácilmente una variedad de piezas de información, todas relacionadas con una cosa, como las especificaciones de diferentes piezas de hardware de computadora:

|_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_| |_+_|

Escribir de manera eficiente en un idioma significa conocer los mecanismos y estructuras que ofrece, y seleccionar el más adecuado para el problema que estás tratando de resolver. Las matrices asociativas le brindan una forma fácil de usar de almacenar datos que puede buscar por nombre, como un diccionario.

LEER SIGUIENTE
  • & rsaquo; ¿Qué es la protección contra caídas MIL-SPEC?
  • & rsaquo; 5 sitios web que todo usuario de Linux debería marcar
  • & rsaquo; Funciones frente a fórmulas en Microsoft Excel: ¿Cuál es la diferencia?
  • & rsaquo; The Computer Folder Is 40: Cómo Xerox Star creó el escritorio
  • & rsaquo; Cómo encontrar su Spotify Wrapped 2021
  • & rsaquo; Cyber ​​Monday 2021: las mejores ofertas tecnológicas
Foto de perfil de Dave McKay Dave McKay
Dave McKay usó computadoras por primera vez cuando la cinta de papel perforada estaba de moda, y ha estado programando desde entonces. Después de más de 30 años en la industria de las tecnologías de la información, ahora es un periodista de tecnología a tiempo completo. Durante su carrera, ha trabajado como programador autónomo, gerente de un equipo de desarrollo de software internacional, gerente de proyectos de servicios de TI y, más recientemente, como oficial de protección de datos. Su escrito ha sido publicado por howtogeek.com, cloudsavvyit.com, itenterpriser.com y opensource.com. Dave es un evangelista de Linux y un defensor del código abierto.
Leer biografía completa

Artículos De Interés