Saber cómo trabajar con matrices en scripts de shell lo ayudará a trabajar con conjuntos de datos más grandes de una manera mucho más eficiente. Pero, ¿qué son las matrices y cómo se pueden crear matrices? ¡Vamos a averiguarlo!
¿Qué son las matrices?
Si ya tiene una comprensión básica de cualquier lenguaje de programación, sabe qué son las matrices. Pero para los no iniciados, repasemos los conceptos básicos de las matrices y aprendamos a trabajar con ellas.
Las variables almacenan elementos de datos individuales. Las matrices, por otro lado, pueden almacenar una cantidad prácticamente ilimitada de elementos de datos. Cuando se trabaja con una gran cantidad de datos, las variables pueden resultar muy ineficientes y es muy útil familiarizarse con las matrices.
Aprendamos a crear arreglos en scripts de shell.
Creación de matrices en scripts de shell
Hay dos tipos de matrices con las que podemos trabajar, en scripts de shell.
- Matrices indexadas – Almacenar elementos con un índice a partir de 0
- Matrices asociativas – Almacenar elementos en pares clave-valor
La matriz predeterminada que se crea es una matriz indexada. Si especifica los nombres de índice, se convierte en una matriz asociativa y se puede acceder a los elementos utilizando los nombres de índice en lugar de números.
Declaración de matrices:
root@ubuntu:~# declare -A assoc_array root@ubuntu:~# assoc_array[key]=value OR root@ubuntu:~# declare -a indexed_array root@ubuntu:~# indexed_array[0]=value
Observe las letras mayúsculas y minúsculas a . Mayúsculas A
se usa para declarar una matriz asociativa mientras que a
en minúsculas se utiliza para declarar una matriz indexada.
El declare
La palabra clave se usa para declarar matrices explícitamente, pero en realidad no es necesario usarlas. Cuando está creando una matriz, simplemente puede inicializar los valores según el tipo de matriz que desea sin declarar explícitamente las matrices.
Trabajar con arreglos en Shell Scripts
Ahora que sabe cómo crear matrices, aprendamos a trabajar con matrices. Dado que se trata de colecciones de elementos de datos, podemos trabajar con bucles y matrices al mismo tiempo para extraer los puntos de datos necesarios.
1. Acceder a los elementos de la matriz de forma individual
Como sabemos que cada punto de datos se indexa individualmente, podemos acceder a todos los elementos de la matriz especificando el índice de la matriz como se muestra a continuación:
assoc_array[element1]="Hello World" echo ${assoc_array[element1]}
Del mismo modo, accedamos a algunos elementos de matriz indexados. Podemos especificar todos los elementos para la matriz de índice delimitando con espacios porque el índice se genera automáticamente para cada uno de esos elementos.
index_array=(1 2 3 4 5 6) echo ${index_array[0]}
Como puede ver, el primer elemento se imprime automáticamente en función del índice 0.
2. Lectura de elementos de matriz secuencialmente
Esta va a ser una tarea fácil si ya conoce los bucles for. Si no lo hace, los cubriremos en un tutorial futuro. Haremos uso de los bucles while o for en los scripts de shell para trabajar con los elementos de la matriz. Copie el script a continuación y guárdelo como
#!/bin/bash index_array=(1 2 3 4 5 6 7 8 9 0) for i in ${index_array[@]} do echo $i done
La secuencia de comandos anterior generará lo siguiente:
Ahora es posible que haya notado el index_array[@] y si te preguntas qué es el @ símbolo es para, vamos a repasar lo mismo ahora.
Operaciones integradas para matrices en scripts de shell
Ahora que aprendió cómo acceder a los elementos individualmente y usar bucles for, aprendamos las diferentes operaciones que están disponibles de forma predeterminada para las matrices.
1. Acceder a todos los elementos de una matriz
Aprendimos cómo acceder a los elementos proporcionando el índice o la clave de la matriz. Pero si queremos imprimir todos los elementos a la vez o trabajar con todos los elementos, podemos usar otro operador que es el [@]
símbolo.
Como notó en el ejemplo anterior, usé este símbolo cuando quería recorrer todos los elementos de la matriz usando el bucle for.
echo ${assoc_array[@]}
Lo anterior imprimirá todos los elementos que están almacenados dentro de la matriz assoc.
2. Cuente el número de elementos en una matriz
Similar al @
símbolo de arriba, tenemos el #
símbolo que se puede anteponer al nombre de una matriz para proporcionarnos el recuento de los elementos almacenados en la matriz. Veamos cómo funciona.
echo ${#index_array[@]}
Si desea contar la cantidad de caracteres utilizados para un elemento en particular, simplemente podemos reemplazar el @
símbolo con el índice.
3. Eliminar elementos de matriz individuales
Sabemos cómo agregar elementos de matriz e imprimirlos también. Aprendamos cómo eliminar elementos específicos. Para este propósito, usaremos el unset
palabra clave.
unset index_array[1]
Reemplace el nombre de la matriz y la ID del índice en el ejemplo de código anterior y habrá eliminado el elemento de la matriz que desea. Bastante simple, ¿no?
Conclusión
Los scripts de shell son bastante extensos y pueden reemplazar cualquier función que pueda realizar en la terminal con la persona adecuada escribiendo el script. Algunas funcionalidades adicionales de matrices en scripts de shell también incluyen poder trabajar con regex (Expresiones regulares). Podemos usar varias expresiones regulares para manipular los elementos de la matriz dentro de los scripts de shell.
Por ahora, esperamos que tenga una buena comprensión de la creación y el trabajo con arreglos y que pueda usar arreglos en sus secuencias de comandos. Comente a continuación para hacernos saber lo que piensa y si tiene alguna pregunta sobre este tema.