Introducción
Saber cómo trabajar con arrays en scripts de shell te ayudará a trabajar con conjuntos de datos más grandes de forma muy eficiente. Pero ¿qué son los arrays y cómo se crean? Vamos a averiguarlo.
¿Qué son las matrices?
Si ya tienes conocimientos básicos de cualquier lenguaje de programación, sabes qué son los arrays. Pero para quienes no los conocen, repasemos sus fundamentos y aprendamos a trabajar con ellos.
Las variables almacenan elementos de datos individuales. Los arrays, en cambio, pueden almacenar una cantidad casi ilimitada de elementos de datos. Al trabajar con grandes cantidades de datos, las variables pueden ser muy ineficientes, por lo que el uso de arrays resulta muy útil.
Aprendamos cómo crear matrices 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: almacenan elementos con un índice que comienza en 0
- Matrices asociativas: almacenan elementos en pares clave-valor
La matriz predeterminada creada es una matriz indexada. Si se especifican nombres de índice, se convierte en una matriz asociativa y se puede acceder a los elementos mediante nombres de índice en lugar de números.
Declarando 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]=valueTenga en cuenta la a mayúscula y la a minúscula. La A mayúscula se utiliza para declarar una matriz asociativa, mientras que la a minúscula se utiliza para declarar una matriz indexada.
La palabra clave declare se usa para declarar matrices explícitamente, pero no es necesario usarla. Al crear una matriz, puedes inicializar los valores según el tipo de matriz que desees sin declararlas explícitamente.
Trabajar con matrices en scripts de shell
Ahora que sabes cómo crear un array, aprendamos a trabajar con ellos. Dado que son colecciones de elementos de datos, podemos trabajar con bucles y arrays simultáneamente para extraer los datos necesarios.
1. Acceso a los elementos de la matriz individualmente
Como sabemos que cada punto de datos está indexado 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]}De forma similar, accedamos a algunos elementos de una matriz indexada. Podemos especificar todos los elementos de la matriz indexada separándolos con espacios, ya que el índice se genera automáticamente para cada uno de ellos.
index_array=(1 2 3 4 5 6)
echo ${index_array[0]}Como puede ver, el primer elemento se imprime automáticamente en el índice 0.
2. Lectura secuencial de elementos de la matriz
Si ya conoces los bucles, esto te resultará fácil. Si no, los veremos en un próximo tutorial. Usaremos bucles while o for en scripts de shell para operar con elementos de array. Copia el siguiente script y guárdalo como Guardar .sh
#!/bin/bash
index_array=(1 2 3 4 5 6 7 8 9 0)
for i in ${index_array[@]}
do
echo $i
doneEl script anterior tendrá el siguiente resultado:
Ahora probablemente hayas notado index_array[@] y si te preguntas para qué sirve el símbolo @, lo cubriremos ahora mismo.
Operaciones integradas para matrices en scripts de shell
Ahora que ha aprendido cómo acceder a los elementos individualmente y utilizar bucles for, aprendamos las distintas operaciones que están disponibles de forma predeterminada para las matrices.
1. Acceder a todos los elementos de una matriz
Aprendimos a acceder a los elementos proporcionando un índice o una clave de matriz. Pero si queremos imprimir todos los elementos a la vez o trabajar con todos ellos, podemos usar otro operador: el signo [@].
Como habrás notado en el ejemplo anterior, utilicé este símbolo cuando quise recorrer todos los elementos de la matriz usando un bucle for.
echo ${assoc_array[@]}Lo anterior imprime todos los elementos almacenados en la matriz assoc.
2. Cuente el número de elementos en una matriz
Similar al símbolo @ anterior, tenemos el símbolo #, que puede anteponerse al nombre de un array para indicar el número de elementos almacenados en él. Veamos cómo funciona.
echo ${#index_array[@]}Si desea contar la cantidad de caracteres utilizados para un elemento en particular, podemos simplemente reemplazar el signo @ con el índice.
3. Eliminar elementos individuales de la matriz
Sabemos cómo agregar elementos de un array e imprimirlos. Aprendamos a eliminar elementos específicos. Para ello, usamos la palabra clave unset.
unset index_array[1]Reemplace el nombre de la matriz y el ID del índice en el ejemplo de código anterior y habrá eliminado el elemento de la matriz deseado. Bastante simple, ¿verdad?
Resultado
Los scripts de shell son muy completos y pueden reemplazar cualquier función que se realice en la terminal si la persona adecuada los escribe. Algunas capacidades adicionales de los arrays en scripts de shell incluyen la posibilidad de trabajar con expresiones regulares (regex). Podemos usar diversas expresiones regulares para manipular elementos de arrays en scripts de shell.
Esperamos que ya comprendas bien cómo crear y trabajar con matrices y que puedas usarlas en tus scripts. Deja un comentario a continuación para compartir tu opinión y háznos saber si tienes alguna pregunta sobre este tema.












