Familiarícese con las matrices Bash: cómo declararlas, manipularlas y eliminarlas.
Las matrices son almacenes de datos que se utilizan para contener valores que tienen alguna relación entre sí. A diferencia de la mayoría de los lenguajes de programación, las matrices Bash pueden almacenar valores de diferentes tipos de datos en la misma matriz.
Bash tiene dos tipos de matrices: matrices indexadas y matrices asociativas. Para las matrices indexadas, los índices comienzan de 0 a (n-1), como es común en la mayoría de los idiomas. Sin embargo, las matrices en Bash son escasas. Esto significa que puede asignar el (n-1)ésimo elemento de la matriz sin haber asignado el (n-2)ésimo elemento.
En este tutorial, aprenderá cómo trabajar con matrices en Bash. Empecemos.
Definición de matrices
Hay tres formas de definir matrices en Bash. Al igual que las variables Bash, las matrices deben inicializarse en el momento de la creación. La única excepción a esto es si estás usando el declarar palabra clave. También debe asegurarse de que no quede espacio a ninguno de los lados del operador de asignación mientras inicializa la matriz.
El primer método es la asignación compuesta de valores al nombre de la matriz. Hay dos maneras de hacer esto:
arr1 = (3 5 6 7)
# or this
arr2 = ([3]=5 [1]=8 [0]=7)
En la primera asignación compuesta, los valores entre paréntesis se asignan secuencialmente desde el índice [0] a [3].
Sin embargo, en el segundo, los valores se asignan a un índice en el orden que haya indicado el programador.
Relacionado: ¿Qué son las variables de entorno en Linux? Todo lo que necesitas saber
Si prestaste atención a arr2, notarás ese índice [2] quedó fuera. La matriz aún se creará sin que se produzcan errores. Esta tarea es en realidad una demostración de almacenamiento escaso en matrices Bash, como mencionamos anteriormente.
Observe que no hay comas que separen los valores de la matriz. Los valores están simplemente separados por espacios.
El segundo método declara indirectamente la matriz. Puede comenzar a asignar valores a elementos de matriz nulos:
arr3[0]=Toyota
arr3[1]=Honda
arr3[2]=Mercedes
La tercera forma es declarar explícitamente la matriz con la palabra clave declarar:
declare -a arrayName
Operaciones sobre matrices
Para acceder a los elementos de la matriz, utilice esta sintaxis: ${matriz[índice]}
fruits=(mango banana apples)
echo${fruits[1]}# output is banana
Si necesita imprimir la matriz completa, utilice el @ símbolo como el
índice de ${matriz[índice]}:
echo${fruits[@]}
Para saber el número de elementos de la matriz, utilice el # símbolo como se muestra a continuación:
echo ${#fruits[1]}
Es posible que también necesite modificar elementos de la matriz; consulte el ejemplo siguiente sobre cómo hacerlo. Es similar a cómo agregas un nuevo elemento. La única diferencia es que estás reemplazando un valor por un índice que ya tiene un valor.
fruits[1]=pears
Matrices asociativas
Una matriz que tiene valores arbitrarios como claves se llama matriz asociativa. Estas matrices se utilizan para almacenar pares clave-valor relacionados.
Relacionado: Cómo convertir scripts Bash en aplicaciones en las que se puede hacer clic usando AppleScript
Para definir una matriz asociativa, debe hacerlo explícitamente usando la palabra clave declarar.
# associative array called animal
declare -A animal
animal[giraffe]=tall
animal[lion]=brave
animal[cheetah]=fast
Puede acceder a un elemento miembro de la misma manera que lo hace con las matrices indexadas:
echo${animal[lion]}
Si desea imprimir todos los valores, puede utilizar el @ símbolo como se muestra a continuación:
echo${animal[@]}
Si desea imprimir todas las claves de la matriz, puede utilizar el @ y ! símbolos como se demuestra a continuación:
echo${!animal[@]}
Para encontrar la cantidad de elementos que tiene la matriz asociativa, use la misma sintaxis que usaría con las matrices indexadas (que se muestra en la última sección).
Si desea eliminar un elemento de la matriz o toda la matriz, utilice la siguiente sintaxis:
unset arrayName[Key] # delete array item
unset arrayName # delete entire array
Usando el comando printf
Es posible que hayas notado que todo este artículo utiliza el eco comando para enviar datos al shell. El eco El comando funciona para este tutorial pero tiene pocas características y flexibilidad cuando se trata de formatear cadenas.
sin embargo, el imprimirf El comando ofrece opciones de formato más específicas que hacen que las secuencias de comandos Bash sean muy sencillas. Aprendiendo el imprimirf La función seguramente mejorará su experiencia y eficiencia en el formateo de cadenas en Bash.