Aloje su propio agente de IA con OpenClaw: instalación gratuita en un solo clic!

Guía de arrays en Bash: Indexados, Asociativos y Bucles

Guía de arrays en Bash: Indexados, Asociativos y Bucles

Los arreglos Bash son una de esas características que parecen intimidantes hasta que los usas una vez. Después de eso, te encontrarás usándolos constantemente al escribir scripts que identifican listas de valores.

¿Qué es un arreglo Bash?

Un arreglo bash es una variable que contiene múltiples valores. En lugar de declarar variables separadas para cada elemento de una lista, las pones en un arreglo y las referencias por índice o clave. Bash no se preocupa de si los elementos son cadenas o números, y no impone tipos consistentes.

Arreglos Indexados vs Arreglos Asociativos

Los arreglos indexados usan enteros como claves, comenzando desde 0. Son el valor predeterminado y se comportan como arreglos en casi todos los demás lenguajes. Los arreglos asociativos usan cadenas como claves, ofreciéndote funcionalidad de par clave-valor similar a mapas hash o diccionarios. Los arreglos asociativos requieren declaración explícita con declare -A.

Cuándo usar arreglos en scripts Bash

Usa arreglos cuando estés iterando sobre una lista de servidores, archivos, nombres de usuario o cualquier colección de elementos. Sin arreglos, terminas con múltiples variables (servidor1, servidor2, servidor3) y lógica condicional que duplica código. Con un arreglo, un bucle maneja toda la lista.

Cómo declarar un arreglo Bash

Declarando un arreglo indexado

Tres maneras de declarar un arreglo indexado:

Todo de una vez:

fruits=("apple" "banana" "cherry")

Uno por uno:

fruits[0]="apple" fruits[1]="banana" fruits[2]="cherry"

Usando declare:

declare -a fruits=("apple" "banana" "cherry")

Declarando un arreglo asociativo

Los arreglos asociativos requieren la directiva declare -A:

declare -A servers servers[web]="192.168.1.10" servers[db]="192.168.1.20" servers[cache]="192.168.1.30"

O en línea:

declare -A servers=([web]="192.168.1.10" [db]="192.168.1.20")

Cómo agregar variables a un arreglo Bash

Para arreglos indexados, apéndelo usando el operador +=:

fruits+=("date" "elderberry")

Asigna a un índice específico:

fruits[5]="fig"

Nota: los arreglos bash son dispersos. Asignar al índice 5 cuando solo tienes 3 elementos deja los índices 3 y 4 sin asignar, no vacíos.

Referenciando e imprimiendo elementos de un arreglo

Acceder a un solo elemento

Usa la sintaxis de llaves con el índice:

echo ${fruits[0]}

Para arreglos asociativos:

echo ${servers[web]}

Imprimir todo el arreglo

El símbolo @ expande todos los elementos:

echo ${fruits[@]}

Para ver todas las claves:

echo ${!fruits[@]}

Obtener la longitud del arreglo

Prefija con # para obtener la longitud del arreglo bash:

echo ${#fruits[@]}

Para obtener la longitud de cadena de un elemento específico:

echo ${#fruits[0]}

Cómo eliminar elementos de un arreglo Bash

Usa unset para eliminar un elemento específico:

unset fruits[1]

Esto elimina el elemento pero deja el hueco del índice. La longitud del arreglo disminuye en uno. Para eliminar todo el arreglo:

unset fruits

Cómo recorrer un arreglo Bash

Bucle con For-In

La forma estándar de iterar sobre los valores del arreglo:

for fruit in "${fruits[@]}"; do     echo "$fruit" done

Las comillas alrededor de ${fruits[@]} manejan correctamente los elementos con espacios. Sin ellas, un elemento como ‘fruta de la pasión’ se divide en dos.

Bucle con índice

Cuando necesitas el índice junto con el valor:

for i in "${!fruits[@]}"; do     echo "Index $i: ${fruits[$i]}" done

El prefijo ! expande los índices del arreglo en lugar de sus valores.

Pasando un arreglo Bash a una función

Bash no pasa arreglos a funciones de forma nativa. La solución alternativa: pasa el nombre del arreglo y usa expansión indirecta dentro de la función:

function process_array {     local -n arr=$1     for item in "${arr[@]}"; do         echo "Processing: $item"     done }  my_list=("file1" "file2" "file3") process_array my_list

El flag -n en local crea una referencia de nombre. La función opera sobre el arreglo original sin copiarlo.

FAQ: Arreglo Bash

¿Cómo declaro un arreglo en bash?

Para un arreglo indexado: fruits=(«manzana» «plátano» «cereza») Para un arreglo asociativo: declare -A servers=([web]=»192.168.1.10″ [db]=»192.168.1.20″)

¿Cómo recorro un arreglo bash?

Usa for-in: for item in «${array[@]}»; do echo «$item»; done. Siempre coloca comillas en «${array[@]}» para identificar elementos que contienen espacios.

¿Cómo obtengo la longitud de un arreglo bash?

Usa ${#array[@]}. Ejemplo: count=${#fruits[@]}. Esto da el número de elementos en el arreglo.

¿Qué es un arreglo asociativo bash?

Un arreglo asociativo usa claves de cadena en lugar de índices enteros. Decláralo con declare -A: declare -A config=([host]=»localhost» [port]=»3306″). Accede a los valores con ${config[host]}.

Scroll al inicio