En Bash 4 y versiones posteriores, las matrices asociativas le permiten crear listas de pares clave-valor que se pueden buscar por clave o por valor. Debido a la relación bidireccional entre la clave y el valor, también se denominan diccionarios de datos.
Podemos iterar a través de una matriz asociativa usando un for
círculo. Este script es «asociative.sh». Define una matriz asociativa con cuatro entradas, una para cada uno de «perro», «gato», «robin» y «humano». Estas son las claves. Los valores son el número (predeterminado) de patas que tiene cada uno.
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash declare -A animals=( [dog]=Four-legged [cat]=Four-legged [robin]=Two-legged [human]=Two-legged ) for legs in ${!animals[@]} do if [ ${animals[$legs]} == "Two-legged" ]; then echo ${legs} fi done |
El iterador se llama legs
. Tenga en cuenta que el encabezado del ciclo contiene un «!
«Punto de exclamación. Esto no actúa como el operador lógico NOT, es parte de la sintaxis de matriz asociativa. Se requiere para buscar a través de la matriz.
El cuerpo del bucle realiza una prueba de comparación de cadenas. Si el valor del miembro de la matriz es «de dos patas», imprime el valor de la clave en la ventana del terminal. Cuando lo ejecutamos, el script imprime las criaturas de dos patas.
Este codigo ${animals[@]}
se expande a los valores y ${!animal[@]}
se expande a dog cat robin human.