Matrices (Arrays) en Shell

ShellShellBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo trabajar con matrices (arrays) en la programación de shell. Las matrices son estructuras de datos que te permiten almacenar múltiples valores bajo un solo nombre, lo que facilita la organización y manipulación de datos. Aprenderás cómo inicializar matrices, agregar elementos a ellas, acceder a los elementos por su índice y determinar el número de elementos en una matriz. Este conocimiento es fundamental para tareas más avanzadas de scripting de shell y manipulación de datos.

Crear un nuevo archivo de script de shell

Comencemos creando un nuevo archivo de script de shell donde escribiremos nuestras operaciones con matrices (arrays).

  1. Abre tu terminal en el WebIDE.

  2. Navega hasta el directorio del proyecto:

    cd ~/project
  3. Crea un nuevo archivo llamado arrays.sh utilizando el comando touch:

    touch arrays.sh
  4. Abre el archivo arrays.sh en el WebIDE.

Inicializar matrices (arrays) vacías

Ahora que tenemos nuestro archivo de script, comencemos inicializando tres matrices (arrays) vacías.

Agrega el siguiente código a tu archivo arrays.sh:

#!/bin/bash

## Inicializar matrices (arrays) vacías
NUMBERS=()
STRINGS=()
NAMES=()

Analicemos lo que hace este código:

  • La primera línea #!/bin/bash se llama shebang. Le dice al sistema que este script debe ser ejecutado por la shell Bash.
  • Estamos creando tres matrices (arrays) vacías: NUMBERS, STRINGS y NAMES.
  • La sintaxis () inicializa una matriz (array) vacía.

Agregar elementos a las matrices (arrays)

Ahora que tenemos nuestras matrices (arrays) vacías, agreguemos algunos elementos a ellas.

Agrega el siguiente código a tu archivo arrays.sh, debajo de las inicializaciones de las matrices (arrays):

## Add elements to NUMBERS array
NUMBERS+=(1)
NUMBERS+=(2)
NUMBERS+=(3)

## Add elements to STRINGS array
STRINGS+=("hello")
STRINGS+=("world")

## Add elements to NAMES array
NAMES+=("John")
NAMES+=("Eric")
NAMES+=("Jessica")

Esto es lo que hace este código:

  • Usamos el operador += para agregar elementos a nuestras matrices (arrays).
  • Para NUMBERS, estamos agregando los enteros 1, 2 y 3.
  • Para STRINGS, estamos agregando las palabras "hello" y "world".
  • Para NAMES, estamos agregando tres nombres: "John", "Eric" y "Jessica".
  • Ten en cuenta que encerramos los elementos de tipo cadena (string) entre comillas, pero los números no necesitan comillas.

Determinar el número de elementos en una matriz (array)

Una operación común con matrices (arrays) es averiguar cuántos elementos contienen. Hagamos esto para nuestra matriz (array) NAMES.

Agrega el siguiente código a tu archivo arrays.sh:

## Get the number of elements in the NAMES array
NumberOfNames=${#NAMES[@]}

Esta línea hace lo siguiente:

  • ${#NAMES[@]} nos da el número de elementos en la matriz (array) NAMES.
  • Almacenamos este valor en una variable llamada NumberOfNames.
  • El símbolo @ dentro de los corchetes se refiere a todos los elementos de la matriz (array).
  • El símbolo # antes de NAMES le dice a la shell que cuente los elementos.

Acceder a un elemento específico en una matriz (array)

Ahora, accedamos a un elemento específico en nuestra matriz (array) NAMES. Obtendremos el segundo nombre.

Agrega este código a tu archivo arrays.sh:

## Access the second name in the NAMES array
second_name=${NAMES[1]}

Esto es lo que hace este código:

  • Estamos accediendo al segundo elemento de la matriz (array) NAMES con ${NAMES[1]}.
  • Recuerda, los índices de las matrices (arrays) en Bash comienzan en 0, así que [1] nos da el segundo elemento.
  • Almacenamos este valor en una variable llamada second_name.

Imprimir las matrices (arrays) y variables

Finalmente, agreguemos algún código para imprimir nuestras matrices (arrays) y variables y ver los resultados de nuestras operaciones.

Agrega el siguiente código al final de tu archivo arrays.sh:

## Print the arrays and variables
echo "NUMBERS array: ${NUMBERS[@]}"
echo "STRINGS array: ${STRINGS[@]}"
echo "The number of names listed in the NAMES array: $NumberOfNames"
echo "The second name on the NAMES list is: $second_name"

Este código hace lo siguiente:

  • Usamos echo para imprimir cadenas (strings) en la consola.
  • ${NUMBERS[@]} y ${STRINGS[@]} imprimen todos los elementos de estas matrices (arrays).
  • Imprimimos las variables NumberOfNames y second_name que creamos anteriormente.

Ejecutar el script

Ahora que hemos escrito nuestro script, es hora de ejecutarlo y ver los resultados.

  1. En tu terminal, asegúrate de estar en el directorio correcto:

    cd ~/project
  2. Haz que el script sea ejecutable:

    chmod +x arrays.sh
  3. Ejecuta el script:

    ./arrays.sh

Deberías ver una salida similar a esta:

NUMBERS array: 1 2 3
STRINGS array: hello world
The number of names listed in the NAMES array: 3
The second name on the NAMES list is: Eric

Esta salida muestra que nuestras operaciones con matrices (arrays) fueron exitosas:

  • La matriz (array) NUMBERS contiene 1, 2 y 3.
  • La matriz (array) STRINGS contiene "hello" y "world".
  • Contamos correctamente 3 nombres en la matriz (array) NAMES.
  • Recuperamos exitosamente "Eric" como el segundo nombre.

Resumen

En este laboratorio, has aprendido los conceptos básicos de trabajar con matrices (arrays) en la programación de scripts de shell. Has practicado la inicialización de matrices (arrays), la adición de elementos a ellas, el acceso a elementos específicos y la determinación del número de elementos en una matriz (array). Estas habilidades son cruciales para tareas más avanzadas de programación de scripts de shell, especialmente cuando se trabaja con listas de datos o cuando se necesitan realizar operaciones en múltiples elementos. Las matrices (arrays) proporcionan una forma poderosa de organizar y manipular datos en tus scripts de shell, lo que hace que tu código sea más eficiente y más fácil de gestionar.