La matriz asociativa solo puede utilizarse en versión de Bash superiores a 4. Para comprobar la versión de BASH, ejecute el siguiente comando:
1 |
bash --version |
Declarar una matriz asociativa, a continuación 2 formas simples de declarar y poblar una matriz asociativa en bash (puede utilizar bucles, etc…):
1 2 3 4 |
declare -A ArrayEjemplo ArrayEjemplo[Indice1]=Manzana ArrayEjemplo[Indice2]=Pera ArrayEjemplo[Indice3]=Banana |
Y lo mismo pero en una sola línea:
1 |
declare -A ArrayEjemplo=( [Indice1]=Manzana [Indice2]=Pera [Indice3]=Banana ) |
Para acceder a una matriz asociativa, puede utilizar:
1 2 3 |
echo ${ArrayEjemplo[Indice1]} echo ${ArrayEjemplo[Indice2]} echo ${ArrayEjemplo[Indice3]} |
Lo mismo también podría realizarlo mediante un bucle:
1 2 |
for ArrayKey in "${!ArrayEjemplo[@]}"; do echo $ArrayKey; done echo "${!ArrayEjemplo[@]}" |
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.
Del mismo modo, para imprimir el valor, eliminaremos el !
operador de los comandos anteriores:
1 |
for ArrayValue in "${ArrayEjemplo[@]}"; do echo $ArrayValue; done |
También, podemos imprimir las claves con valor usando el bucle for
:
1 |
for ArrayKey in "${!ArrayEjemplo[@]}"; do echo "$ArrayKey => ${ArrayEjemplo[$ArrayKey]}"; done |
Para agregar nuevos valores a nuestra matriz asociativa se usa 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:
1 2 3 |
echo "${ArrayEjemplo[@]}" ArrayEjemplo+=([Indice4]=durazno) echo "${ArrayEjemplo[@]}" |
El comando anterior imprimirá la matriz original, agregará un nuevo miembro y luego imprimirá la matriz modificada.
Para eliminar un valor de la matriz asociativa se usa el comando unset:
1 2 3 |
echo "${ArrayEjemplo[@]}" unset ArrayEjemplo[Indice4] echo "${ArrayEjemplo[@]}" |