1. Inicio
  2. Tecnologia
  3. Bash
  4. Manejo de Arreglos

Manejo de Arreglos

Tipos de arreglos implementados en Bash

Bash puede manejar arreglos unidimensionales indexados y asociativos. Cualquier variable puede ser usado como un arreglo indexado y no hay un límite máximo en su tamaño. Un elemento de un arreglo indexado puede ser referenciado usando un número entero (índice) y su primer elemento está en la posición cero (0).
Un arreglo asociativo es una estructura de datos para almacenar pares de tipo clave-valor. Cada clave es única y tiene asociado un valor.

Operaciones con arreglos indexados

En la siguiente tabla se resumen las operaciones que se pueden hacer con los arreglos indexados:

SintaxisResultado
declare -a nombreDeclarar explicitamente un arreglo indexado
arr=()Crear un arreglo vacío
arr=(1 2 3)Inicializar un arreglo indexado
${arr[2] }Obtener el tercer elemento del arreglo
${arr[@]}Obtener todos los elementos del arreglo
${!arr[@]}Obtener todos los índices del arreglo
${#arr[@]}Obtener el número de elementos del arreglo
arr[1]=3Sobreescribir el valor del segundo elemento del arreglo
arr+=(4)Agregar un elemento en un arreglo indexado
${arr[@]:s:n}Obtener n elementos comenzando en el indice s
unset arrEliminar un arreglo
unset arr[1]Borrar el segundo elemento de un arreglo indexado

Ejemplos con arreglos indexados

Recorrer un arreglo

#! /usr/bin/bash
# Crear e inicializar el arreglo
a=(uno dos 3)

 # Recorrer el arreglo
for i in ${!a[@]}; do
    echo "a[$i] = ${a[$i]}"
done

Salida:

a[0] = uno
a[1] = dos
a[2] = 3

Ordenar un arreglo numérico

 #!/bin/bash

arreglo=(4 14 8 32 66 12 2 90)
ordenado=($(IFS=$'\n'; echo "${arreglo[*]}" | sort -n))

echo ${ordenado[*]}

Salida:

2 4 8 12 14 32 66 90

Ordenar un arreglo alfanumérico

#!/bin/bash

arreglo=('manzana' 4 14 8 'banano' 32 66 12 2 90)
ordenado=($(IFS=$'\n'; echo "${arreglo[*]}" | sort -n)))

echo ${ordenado[*]}

Salida:

banano manzana 2 4 8 12 14 32 66 90

Operaciones con arreglos asociativos

En la siguiente tabla se resumen las operaciones que se pueden hacer con los arreglos asociativos

SintaxisResultado
declare -A nombreDeclarar explicitamente un arreglo asociativo
arr=([clave1]=valor1 [clave2]=valor2 ...)Inicializar un arreglo asociativo
arr[clave1]=value1Agregar un valor en un arreglo asociativo
${arr[@]}Obtener todos los valores del arreglo
${!arr[@]}Obtener todas las claves del arreglo
${#arr[@]}Obtener el número de elementos del arreglo
${arr[clave1] }Obtener el valor asociado a una clave del arreglo
unset arr[clave1]Eliminar un elemento del arreglo
unset arrBorrar un arreglo asociativo

Ejemplos con arreglos asociativos

Recorrer un arreglo asociativo

#! /usr/bin/bash
# Declarar e inicializar el arreglo
declare -A arreglo
arreglo=([uno]=1 [dos]=2 [tres]=3)

#Recorrer el arreglo
for clave in ${!arreglo[@]}; do
  echo "${clave} = ${arreglo[${clave}]}"
done

Salida:

dos = 2
uno = 1
tres = 3

Verificar si existe una clave

 #!/bin/bash
#Declarar e inicializar el arreglo
declare -A arreglo
arreglo=([uno]=1 [dos]=2 [tres]=3)

#Verificar si la clave 'cinco' existe
if [[ -n "${arreglo[cinco]}" ]]; then
  echo "Existe"
else
  echo "No existe"
fi

Salida:

No existe