Cómo usar matrices de índice en Bash

Cómo usar matrices de índice en Bash
Bash proporciona soporte para matrices indexadas, que son esencialmente listas de elementos a los que se puede acceder utilizando su número de índice. Las matrices indexadas son particularmente útiles cuando desea almacenar y manipular muchos valores relacionados, lea aún más este artículo para aprender a usar matrices de índice.

¿Qué son las matrices de índice?

Las matrices indexadas son una colección de elementos en BASH a los que se puede acceder utilizando un índice o una clave. Estas matrices se pueden usar para almacenar y recuperar datos en un orden específico, lo que facilita la gestión de grandes cantidades de datos. La sintaxis para declarar una matriz indexada en BASH es la siguiente:

= (Element1 Element2 Element3 ...)

Aquí, Array_Name es el nombre de la matriz, y Element1, Element2, Element3, etc., están los valores que se almacenarán en la matriz. Los valores están separados por Whitespace y tenga en cuenta que también puede usar el comando Declarar para crear una matriz.

Cómo usar matrices indexadas en Bash

Para crear una matriz de índice en BASH, simplemente necesita declarar una variable y asignarla valores encerrados entre paréntesis y separados por espacios. Aquí hay pocos ejemplos que demuestran cómo usar matrices indexadas en Bash:

  • Reordenar una lista
  • Filtrando una lista
  • Contando ocurrencias
  • Actualizar una lista

Reordenar una lista en Bash

Si tiene una lista de elementos en cierto orden y desea reordenarlos de una manera diferente. Puede usar una matriz de índice para crear un nuevo pedido para los elementos, de la siguiente manera:

#!/bin/bash
elementos = ("mango" "piña" "fresa" "cereza" "uvas")
Orden = (4 2 0 3 1)
para i en "$ orden [@]"
hacer
echo $ elementos [$ i]
hecho

En este ejemplo, creamos una matriz llamada elementos con cinco elementos. También creamos una matriz de índice llamado orden, que especifica un nuevo pedido para los elementos. Luego pasamos a través de la matriz de pedidos y usamos cada valor como índice para recuperar el elemento correspondiente de la matriz de elementos e imprimirlo.

Filtrando una lista en Bash

Si tiene una lista de elementos y desea filtrar ciertos elementos en función de una condición. Puede usar una matriz de índice para realizar un seguimiento de los índices de los elementos que cumplen con la condición, de la siguiente manera:

#!/bin/bash
elementos = ("mango" "piña" "fresa" "cereza" "uvas")
índices = ()
para i en "$ !elementos[@]"
hacer
if [[$ elementos [$ i] == * "r" *]]
entonces
índices+= ($ i)
FI
hecho
para i en "$ índices [@]"
hacer
echo $ elementos [$ i]
hecho

En este ejemplo, creamos una matriz llamada elementos con cinco elementos. También creamos una matriz de índice vacío llamada índices. Luego recorremos la matriz de elementos y verificamos si cada elemento contiene la letra "r". Si es así, agregamos su índice a la matriz de índices. Finalmente, pasamos a través de la matriz de índices y usamos cada valor como índice para recuperar el elemento correspondiente de la matriz de elementos e imprimirlo.

Contando ocurrencias en Bash

Si tiene una lista de elementos y desea contar el número de ocurrencias de cada elemento, puede usar una matriz de índice para realizar un seguimiento de los recuentos y aquí hay un ejemplo de demostración:

#!/bin/bash
elementos = ("mango" "piña" "fresa" "cereza" "uvas")
cuentas = ()
para i en "$ !elementos[@]"
hacer
si [[ ! "$ cuenta [@]" = ~ "$ elementos [$ i]"]]]
entonces
Counts+= ("$ elementos [$ i] 1")
demás
index = $ (echo "$ cuenta [@]" | tr "'\ n' | grep -n"^$ elementos [$ i] "| cu)
count = $ (echo "$ Counts [$ index -1]" | Cut -d "-f2)
Counts [$ index-1] = "$ elementos [$ i] $ ((cuenta+1))"
FI
hecho
para contar en "$ Counts [@]"
hacer
Echo $ Count
hecho

Primero inicializa una matriz llamada "elementos" con una lista de cadenas. Luego declara una matriz vacía llamada "Counts". Se crea un bucle for para iterar para cada elemento en la matriz "elementos" y para cada elemento verifica si ya existe en la matriz de "conteos".

Si no existe, agrega el elemento y el recuento de 1 a la matriz "Conts". Si existe, incrementa el recuento de ese elemento en la matriz de "conteos". Finalmente, para imprimir cada elemento y su recuento correspondiente se usa otro para el bucle. La salida de este código imprimirá el recuento de cada elemento en la matriz de "elementos", con duplicados que se cuentan por separado.

Actualizar una lista en Bash

Si tiene una lista de elementos y desea agregar o eliminar elementos de él, entonces puede usar una matriz de índice y aquí hay un ejemplo de demostración:

#!/bin/bash
elementos = ("mango" "piña" "fresa" "cereza" "uvas")
# Agregar un nuevo elemento a la matriz indexada en el índice 2
elementos [6] = "naranja"
# Eliminar el elemento en el índice 2 de la matriz indexada
elementos unset [2]
# Impresión de la matriz actualizada
echo "$ elementos [@]"

En el script, se define una matriz indexada "elementos" con cinco elementos iniciales. Para agregar un nuevo elemento, el valor simplemente se asigna al índice deseado utilizando la matriz de sintaxis [índice] = valor. En este script, se agrega "naranja" al índice 6 de la matriz. Para eliminar un elemento, usamos el comando unset seguido del índice del elemento que queremos eliminar. En este caso, se elimina el elemento en el índice 2 ("Strawberry"). La matriz actualizada se imprime luego utilizando la sintaxis "$ array [@]", que expande toda la matriz.

Conclusión

Las matrices indexadas son una estructura práctica de bash que le permite almacenar y manipular múltiples valores utilizando una sola variable. Al comprender la sintaxis y el uso de matrices indexadas, puede escribir scripts bash más eficientes y efectivos.