Arreglos en Bash: tipos, índices y sintaxis
Clase 23 de 43 • Curso de Programación en Bash Shell
Contenido del curso
Programación Shell Básica
Script Interactivos
Condicionales
Iteración
Archivos
Empaquetamiento
Funciones
Cierre del curso
Los arreglos en Bash te permiten manejar múltiples valores con eficiencia y claridad. Aquí verás cómo definirlos, imprimirlos, medir su tamaño, acceder por índice y modificar posiciones, tal como se mostró en un script práctico con correcciones reales de sintaxis. Conecta estas técnicas con futuras sentencias de iteración como for y while para recorrer datos de forma confiable.
Fundamentos de arreglos en Bash
Los arreglos en Bash son variables que almacenan varios valores. Pueden ser números, cadenas o rangos. Se indexan desde 0, lo que significa que el primer elemento está en la posición 0. Además, pueden crecer o reducirse después de su creación sin problemas.
- Índice base cero: el primer elemento está en 0.
- Tipos de elementos: números, cadenas y rangos.
- Flexibilidad: se pueden añadir o eliminar posiciones.
- Uso frecuente: soporte ideal para sentencias de iteración.
Ejemplo de inicio de script con shebang y arreglos, incluyendo rangos con llaves:
#!/usr/bin/env bash
# programa para ejemplificar el uso de arreglos
arreglo_numeros=(1 2 3 4 5 6)
arreglo_cadenas=(Pedro Susana)
# rangos: de la A a la Z y del 10 al 20
arreglo_rangos=({A..Z} {10..20})
¿Cómo definir, imprimir y medir arreglos en Bash?
Definir es directo: usa paréntesis y separa valores por espacio. Para imprimir todos los valores, usa ${arreglo[]}. Para el tamaño, antepone # como en ${#arreglo[]}. Acceder por índice exige recordar el índice 0.
¿Cómo se definen arreglos y rangos en Bash?
- Números: usa valores separados por espacio.
- Cadenas: declara nombres como elementos del arreglo.
- Rangos: emplea llaves con dos puntos dobles, por ejemplo {A..Z} y {10..20}.
arreglo_numeros=(1 2 3 4 5 6)
arreglo_cadenas=(Pedro Susana)
arreglo_rangos=({A..Z} {10..20})
¿Cómo imprimir todos los valores y el tamaño?
- Todos los valores: ${arreglo[*]}.
- Tamaño del arreglo: ${#arreglo[*]}.
echo "Arreglo números: ${arreglo_numeros[*]}"
echo "Arreglo cadenas: ${arreglo_cadenas[*]}"
echo "Arreglo rangos: ${arreglo_rangos[*]}"
echo "Tamaño números: ${#arreglo_numeros[*]}"
echo "Tamaño cadenas: ${#arreglo_cadenas[*]}"
echo "Tamaño rangos: ${#arreglo_rangos[*]}"
En la ejecución mostrada, se observó: tamaño 6 para números, tamaño 4 para cadenas y tamaño 27 para rangos. Al acceder a la posición 3, se obtuvo el cuarto elemento: por ejemplo, la letra D en el arreglo de rangos.
¿Cómo acceder por índice base cero?
- Recuerda: posición 3 equivale al cuarto elemento.
echo "Posición 3 en números: ${arreglo_numeros[3]}"
echo "Posición 3 en cadenas: ${arreglo_cadenas[3]}"
echo "Posición 3 en rangos: ${arreglo_rangos[3]}"
¿Cómo añadir, eliminar y evitar errores comunes?
Puedes modificar arreglos existentes añadiendo valores en posiciones nuevas o eliminando elementos específicos. Además, revisa llaves, corchetes y nombres de variables: un detalle mal escrito rompe la ejecución.
¿Cómo añadir o eliminar posiciones en un arreglo?
- Añadir en índice 7 el valor 20.
- Eliminar la posición 0 para “liberar” el primer elemento.
# añadir
darreglo_numeros[7]=20
# eliminar (liberar)
unset arreglo_numeros[0]
# verificar
echo "Arreglo números tras cambios: ${arreglo_numeros[*]}"
echo "Tamaño números: ${#arreglo_numeros[*]}"
Tras eliminar el índice 0, el primer valor ya no aparece al imprimir. Así se comprobó cuando el arreglo numérico dejó de mostrar el 1 al inicio.
¿Qué errores comunes debes revisar al ejecutar?
- Confundir llaves con corchetes en rangos: usa llaves { }.
- Escribir mal el nombre de la variable: “arreglo_rengos” vs “arreglo_rangos”.
- Colores del entorno del kernel: pueden dificultar ver caracteres; revisa con atención.
¿Cómo ejecutar el script en Ubuntu con permisos?
- Concede permisos de ejecución.
- Ejecuta con ruta relativa.
chmod +x arreglos.sh
./arreglos.sh
¿Te gustaría compartir otras prácticas con arreglos o dudas sobre iteración con for y while? Deja tus comentarios y sumemos ideas para mejorar el manejo de datos en Bash.