GNU/Linux >> Tutoriales Linux >  >> Linux

Matrices en scripts de Shell

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 .sh

#!/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.


Linux
  1. ¿Permitir Setuid en scripts de Shell?

  2. ¿Matrices asociativas en scripts de Shell?

  3. ¿Bloqueo correcto en scripts de Shell?

  4. ¿Cómo eliminar los privilegios de raíz en los scripts de Shell?

  5. ¿Ocultar la contraseña en los scripts de Shell?

Cómo crear scripts de shell

¿Cómo usar if-else en Shell Scripts?

Comprender el bucle for en los scripts de Shell

El bucle while en los scripts de Shell

Matrices bash con ejemplos

Ejecutar scripts desde otro directorio