Introducción
En programación, a menudo necesita almacenar una lista de elementos relacionados, como nombres de archivos, identificadores de usuario o nombres de servidores. En lugar de crear una variable independiente para cada elemento (por ejemplo, file1, file2, file3), puede usar una sola variable llamada array.
Un array permite almacenar varios valores bajo un mismo nombre. Puede imaginarlo como una lista a la que puede añadir, quitar y de la que puede leer elementos.
Los arrays resultan útiles cuando una sola variable deja de ser suficiente. Las listas de servidores, los nombres de archivos, los nombres de paquetes y las cuentas de usuario son ejemplos de datos que suelen aparecer agrupados, en lugar de presentarse como un único valor.
En este laboratorio aprenderá a:
- Declarar un array con un conjunto inicial de valores.
- Añadir nuevos elementos al array.
- Mostrar todos los elementos del array.
- Recorrer el array mediante un bucle para procesar cada elemento individualmente.
Declarar un array
Comience creando un script que contenga una lista de nombres.
Los arrays permiten que el shell trate varios valores relacionados como un grupo, en lugar de distribuirlos entre muchas variables independientes. Esto resulta útil cuando el script necesita procesar una colección y no un solo elemento.
Cree el script array_lab.sh:
cd ~/project
nano array_lab.sh
Escriba este código para inicializar un array:
#!/bin/bash
## Define an array named 'names'
names=("Alice" "Bob")
Reglas de sintaxis:
- Use paréntesis
()para encerrar la lista de valores. - Use espacios (no comas) para separar los elementos.
("Alice" "Bob")es correcto.("Alice", "Bob")es incorrecto porque la coma se trataría como parte de la cadena"Alice,".
Este último punto refleja una regla más general del shell: la sintaxis de Bash puede parecer sencilla, pero pequeñas diferencias de puntuación cambian el significado. Los arrays son listas separadas por espacios, no listas separadas por comas como en algunos otros lenguajes.
Guarde el archivo (Ctrl+O) y salga (Ctrl+X).
Compruebe el contenido del archivo:
cat array_lab.sh
Ha definido correctamente una variable de tipo array, aunque el script todavía no muestra ninguna salida.
Añadir un elemento al array
A menudo no conocerá todos los elementos de la lista al comenzar. Es posible que deba añadir elementos dinámicamente mientras se ejecuta el script.
Esto es habitual en scripts reales. Por ejemplo, puede crear un array con archivos que coincidan con un patrón, hosts activos, servicios con errores o nombres de paquetes descubiertos durante la ejecución.
Puede añadir un elemento nuevo al final de un array mediante el operador +=.
Abra el script:
nano array_lab.sh
Añada la siguiente línea al final:
## Append 'Charlie' to the list
names+=("Charlie")
Explicación:
+=significa «añadir al valor existente».("Charlie")encierra el nuevo elemento entre paréntesis para garantizar que se trate como un elemento del array.
El archivo debería tener ahora este aspecto:
#!/bin/bash
## Define an array named 'names'
names=("Alice" "Bob")
## Append 'Charlie' to the list
names+=("Charlie")
Guarde el archivo y salga.
Mostrar todos los elementos
Para comprobar que el array contiene todos los elementos esperados, puede mostrarlos de una sola vez.
En Bash, el acceso a una variable de tipo array es ligeramente diferente del acceso a una variable normal. Use ${array_name[@]} para expandir todos los elementos.
@es un símbolo especial que actúa como comodín para indicar «todos los elementos».
La forma ${...} es otro ejemplo de expansión de parámetros. Bash no muestra literalmente el nombre de la variable; expande el array con los elementos almacenados antes de que echo reciba el texto final.
Abra array_lab.sh:
nano array_lab.sh
Añada el comando para mostrar los elementos:
## Print all elements in the array
echo "All Names: ${names[@]}"
Guarde el archivo y salga.
Conceda permisos de ejecución al script y ejecútelo:
chmod +x array_lab.sh
./array_lab.sh
Resultado:
All Names: Alice Bob Charlie
La sintaxis ${names[@]} se expandió a una lista separada por espacios con todos los elementos del array.
Recorrer el array
Mostrar la lista completa resulta útil para depurar, pero normalmente querrá procesar cada elemento por separado. Por ejemplo, podría querer crear una cuenta de usuario para cada nombre de la lista.
Para ello, use un bucle for.
Abra array_lab.sh:
nano array_lab.sh
Añada el bucle al final:
echo "--- Processing Names ---"
## Loop through each item in the array
for name in "${names[@]}"; do
echo "Hello, $name"
done
El script completo debería tener ahora este aspecto:
#!/bin/bash
names=("Alice" "Bob")
names+=("Charlie")
echo "All Names: ${names[@]}"
echo "--- Processing Names ---"
for name in "${names[@]}"; do
echo "Hello, $name"
done
Guarde el archivo y salga. Ejecútelo:
./array_lab.sh
Resultado:
También es importante poner "${names[@]}" entre comillas. Esto conserva cada elemento del array como un elemento independiente, algo necesario cuando los valores contienen espacios. Este detalle adquiere mayor importancia en scripts reales, donde los nombres de archivos y los argumentos no siempre son cadenas sencillas de una sola palabra.
All Names: Alice Bob Charlie
--- Processing Names ---
Hello, Alice
Hello, Bob
Hello, Charlie
El bucle tomó cada nombre del array, lo asignó a la variable name y ejecutó el bloque de código. Esta es la forma más habitual de gestionar listas en Bash.
Resumen
En este laboratorio ha aprendido los conceptos básicos del uso de arrays en Bash:
- Declaración (
name=(...)): crear una lista con valores iniciales. - Añadir elementos (
+=): agregar nuevos elementos dinámicamente a un array existente. - Expansión (
${name[@]}): obtener todos los elementos del array. - Recorrido (
for): procesar cada elemento de la lista uno por uno.
Los arrays son fundamentales para escribir scripts que necesiten gestionar eficazmente varios archivos, usuarios o datos.



