Matriz asociativa Bash

Sheeraz Gul 20 junio 2023
  1. Matriz asociativa Bash
  2. Acceda a la matriz asociativa
  3. Agregar nuevos miembros a la matriz asociativa
  4. Eliminar un miembro de la matriz asociativa
Matriz asociativa Bash

Este tutorial demuestra cómo crear una matriz asociativa en Bash.

Matriz asociativa Bash

Las matrices pueden ser muy útiles en Bash para almacenar datos, y la matriz con un índice de cadena también se puede crear en Bash, lo que se denomina matriz asociativa. La matriz asociativa se agregó en Bash 4 y no se puede declarar en la versión anterior.

Primero, verifique la versión de Bash porque si la versión es menor a 4, entonces la matriz asociativa no se puede declarar. Usamos el comando declarar para declarar una matriz asociativa.

Siga los pasos a continuación para declarar una matriz asociativa:

  • Primero, verifique la versión de Bash y ejecute el siguiente comando:
    bash --version
    

    El comando anterior comprobará la versión de Bash. La salida es:

    GNU bash, version 5.0.17(1)-release (x86_64-pc-linux-gnu)
    Copyright (C) 2019 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    
  • Ahora use el comando declarar para declarar una matriz asociativa:
    declare -A DemoArray
    DemoArray[One]=Delftstack1
    DemoArray[Two]=Delftstack2
    DemoArray[Three]=Delftstack3
    DemoArray[Four]=Delftstack4
    DemoArray[Five]=Delftstack5
    DemoArray[Six]=Delftstack6
    

    Los comandos anteriores declararán primero una matriz asociativa y luego asignarán índices y valores.

  • Además, hay otro comando donde podemos declarar una matriz asociativa en una línea:
    declare -A DemoArray1=( [One]=Delftstack1 [Two]=Delftstack2 [Three]=Delftstack3 )
    

    El comando anterior creará una matriz asociativa en una línea.

Acceda a la matriz asociativa

Podemos acceder a los elementos de la matriz asociativa individualmente o mediante una matriz. Podemos repetirlos directamente o poner la matriz en un bucle.

Vea los comandos para acceder a los valores individualmente:

echo ${DemoArray[One]}
echo ${DemoArray[Two]}
echo ${DemoArray[Three]}
echo ${DemoArray[Four]}
echo ${DemoArray[Five]}
echo ${DemoArray[Six]}

El comando anterior imprimirá los valores de la matriz asociativa en los índices dados. Ver la salida:

Delftstack1
Delftstack2
Delftstack3
Delftstack4
Delftstack5
Delftstack6

También podemos acceder a todos los valores de una matriz asociativa mediante un bucle. Ver el comando:

for ArrayKey in "${!DemoArray[@]}"; do echo $ArrayKey; done
echo "${!DemoArray[@]}"

Aquí ! se puede utilizar para leer las claves de una matriz asociativa. El primer comando imprimirá las claves de la matriz asociativa una por una, y el segundo comando imprimirá todas las claves a la vez.

Ver la salida:

Four
Six
One
Five
Two

Three Four Six One Five Two

Del mismo modo, para imprimir el valor, eliminaremos el ! operador de los comandos anteriores:

for ArrayValue in "${DemoArray[@]}"; do echo $ArrayValue; done
echo "${DemoArray[@]}"

Ahora, estos comandos imprimirán todos los valores de la matriz asociativa dada. Ver la salida:

Delftstack4
Delftstack6
Delftstack1
Delftstack5
Delftstack2

Delftstack3 Delftstack4 Delftstack6 Delftstack1 Delftstack5 Delftstack2

Finalmente, podemos imprimir las claves con valor usando el bucle for. Ver el comando:

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

El comando anterior imprime todos los pares clave-valor de la matriz dada. Ver la salida:

Three => Delftstack3
Four => Delftstack4
Six => Delftstack6
One => Delftstack1
Five => Delftstack5
Two => Delftstack2

Agregar nuevos miembros a la matriz asociativa

Agregar un nuevo elemento a una matriz asociativa es una operación muy sencilla. Usamos el operador de concatenación += entre la matriz y el nuevo par clave-valor.

Creamos un par clave-valor y luego lo asignamos a nuestra matriz asociativa. Ver el comando:

echo "${DemoArray[@]}"
DemoArray+=([Seven]=Delftstack7)
echo "${DemoArray[@]}"

El comando anterior imprimirá la matriz original, agregará un nuevo miembro y luego imprimirá la matriz modificada. Ver la salida

Delftstack3 Delftstack4 Delftstack6 Delftstack1 Delftstack5 Delftstack2

Delftstack3 Delftstack4 Delftstack7 Delftstack6 Delftstack1 Delftstack5 Delftstack2

Eliminar un miembro de la matriz asociativa

Eliminar un miembro de una matriz asociativa también es una operación sencilla. Usamos el comando unset en el miembro de la matriz, que se eliminará de la matriz.

Ver los comandos.

echo "${DemoArray[@]}"
unset DemoArray[Seven]
echo "${DemoArray[@]}"

El comando anterior mostrará primero la matriz original, luego eliminará el miembro [Seven] de la matriz y luego mostrará nuevamente la matriz modificada. Ver la salida:

Delftstack3 Delftstack4 Delftstack7 Delftstack6 Delftstack1 Delftstack5 Delftstack2

Delftstack3 Delftstack4 Delftstack6 Delftstack1 Delftstack5 Delftstack2
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Artículo relacionado - Bash Array