Introducción
En esta práctica de laboratorio, aprenderás a comparar arreglos utilizando scripts de Shell. Los arreglos son estructuras de datos muy útiles para almacenar múltiples valores, y compararlos es una tarea habitual en el mundo de la programación. Trabajarás con tres arreglos distintos y desarrollarás un script para identificar los elementos que tienen en común. Este proceso te ayudará a dominar la manipulación de arreglos, el uso de bucles y las sentencias condicionales en Shell.
Crear el archivo del script
En primer lugar, vamos a crear un nuevo archivo para nuestro script.
Abre una terminal en el WebIDE. Deberías ver un símbolo de sistema que termina con el signo
$.Dirígete al directorio del proyecto:
cd ~/project
Este comando cambia tu directorio actual a la carpeta del proyecto. El símbolo ~ representa tu directorio personal (home), y /project es una subcarpeta dentro de él.
- Crea un nuevo archivo llamado
array-comparison.sh:
touch array-comparison.sh
El comando touch crea un archivo vacío. Si el archivo ya existe, simplemente actualiza la marca de tiempo del archivo sin modificar su contenido.
- Abre el archivo en el editor del WebIDE. Puedes hacerlo haciendo clic en el nombre del archivo en el explorador de archivos situado en el lado izquierdo de la interfaz.
Añadir el shebang e inicializar los arreglos
Ahora, comenzaremos a escribir nuestro script añadiendo el shebang e inicializando los arreglos.
- Añade el siguiente contenido a
array-comparison.sh:
#!/bin/bash
## Initialize the arrays
a=(3 5 8 10 6)
b=(6 5 4 12)
c=(14 7 5 7)
Analicemos lo que hemos escrito:
- La primera línea
#!/bin/bashse conoce como shebang. Indica al sistema que debe utilizar el intérprete de Bash para ejecutar este script. Esta línea es fundamental en cualquier script de shell. - A continuación, inicializamos tres arreglos:
a,byc. En Bash, los arreglos se definen encerrando los elementos entre paréntesis()y separándolos con espacios. - Cada arreglo contiene diferentes valores enteros. Utilizaremos estos datos para encontrar los elementos que coinciden en todos ellos.
Implementar el primer bucle de comparación
Vamos a implementar el primer bucle de comparación para encontrar los elementos comunes entre los arreglos a y b.
Añade el siguiente código a tu script:
## Initialize an array to store common elements between a and b
z=()
## Compare arrays a and b
for x in "${a[@]}"; do
for y in "${b[@]}"; do
if [ $x = $y ]; then
z+=($x)
fi
done
done
echo "Common elements between a and b: ${z[@]}"
Explicación detallada del código:
z=()inicializa un arreglo vacío llamadozpara almacenar los elementos comunes encontrados.for x in "${a[@]}"es un bucle que recorre cada elemento del arregloa. La sintaxis"${a[@]}"expande todos los elementos del arreglo.- Luego, tenemos un bucle anidado
for y in "${b[@]}"que recorre cada elemento del arreglob. if [ $x = $y ]comprueba si el elemento actual deaes igual al elemento actual deb.- Si son iguales, añadimos dicho elemento al arreglo
zmediantez+=($x). - Finalmente, imprimimos los elementos comunes usando
echo "Common elements between a and b: ${z[@]}". La sintaxis${z[@]}expande todos los elementos del arregloz.
Implementar el segundo bucle de comparación
Ahora, implementaremos el segundo bucle de comparación para encontrar los elementos comunes entre el arreglo c y los resultados previos almacenados en el arreglo z.
Añade el siguiente código a tu script:
## Initialize an array to store common elements among a, b, and c
j=()
## Compare array c with the common elements found in z
for i in "${c[@]}"; do
for k in "${z[@]}"; do
if [ $i = $k ]; then
j+=($i)
fi
done
done
echo "Common elements among a, b, and c: ${j[@]}"
Este código es similar al bucle anterior, pero con algunas diferencias clave:
- Inicializamos un nuevo arreglo vacío
jpara guardar los elementos comunes finales. - El bucle externo
for i in "${c[@]}"recorre los elementos del arregloc. - El bucle interno
for k in "${z[@]}"recorre los elementos comunes que encontramos entreayb, los cuales están guardados enz. - Comparamos los elementos de
ccon los dez, y si hay una coincidencia, la añadimos al arregloj. - Por último, imprimimos los elementos que están presentes en los tres arreglos originales.
Dar permisos de ejecución al script y ejecutarlo
Una vez completado el script, debemos darle permisos de ejecución y ponerlo a prueba.
- En la terminal, otorga permisos de ejecución al archivo:
chmod +x ~/project/array-comparison.sh
El comando chmod cambia los permisos de un archivo. La opción +x añade el permiso de ejecución, permitiéndote correr el script.
- Ejecuta el script:
~/project/array-comparison.sh
Este comando inicia la ejecución de tu script. La parte ~/project/ especifica la ruta donde se encuentra el archivo.
Deberías ver una salida similar a esta:
Common elements between a and b: 5 6
Common elements among a, b, and c: 5
Este resultado indica que:
- Los elementos comunes entre los arreglos
aybson el 5 y el 6. - El único elemento común entre los tres arreglos (
a,byc) es el 5.
Si no ves esta salida o recibes un error, revisa cuidadosamente tu script para detectar posibles errores tipográficos o partes faltantes.
Resumen
En esta práctica de laboratorio, has aprendido a comparar arreglos en Shell scripting. Has creado un script capaz de encontrar elementos comunes entre tres arreglos distintos utilizando bucles anidados y sentencias condicionales. Este ejercicio ha demostrado conceptos fundamentales de Bash, tales como:
- Creación e inicialización de arreglos.
- Uso de bucles anidados para comparar elementos de arreglos.
- Aplicación de sentencias condicionales para verificar igualdades.
- Adición dinámica de elementos a un arreglo.
- Asignación de permisos de ejecución y ejecución de scripts.
Estas habilidades son esenciales en la programación con Shell y pueden aplicarse a tareas de procesamiento de datos mucho más complejas en el futuro. A medida que sigas practicando, descubrirás que la manipulación de arreglos es una herramienta poderosa para gestionar conjuntos de datos de manera eficiente.
Recuerda que la práctica es fundamental para dominar estos conceptos. Intenta modificar el script para que funcione con otros arreglos o para que busque elementos únicos en lugar de comunes. ¡Feliz programación!



